Skip to content

CI / test-infra hygiene: align checkout versions and strip snapshot timestamps #1847

Description

@pinin4fjords

Background

Two small infra-only fixes that have no functional impact on the pipeline but reduce reviewer friction.

  1. The pipeline's nf-test workflows in .github/workflows/ use three different actions/checkout versions. The nf-test.yml workflow is template-derived (matches the nf-core/tools template at actions/checkout@v6), but our two pipeline-specific extensions — nf-test-arm.yml and nf-test-gpu.yml — have drifted to @v5 and @v4 respectively.

  2. Every entry in tests/*.nf.test.snap carries a wall-clock timestamp field that rotates on each re-snapshot. nf-test does not compare these for snapshot equality (otherwise CI would never pass twice), but they show up as noise in every PR diff that regenerates snapshots.

Both items are pipeline-owned (not template content). Task 1 is straightforward; Task 2 turns out to be blocked on upstream nf-test (see status note below), so this issue ships Task 1 only.

Task 1 — bump actions/checkout in pipeline-specific nf-test workflows

The nf-core/tools template uses actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 in .github/workflows/nf-test.yml. Our nf-test.yml already matches.

Bump the two pipeline-specific extensions to the same SHA-pinned v6:

  • .github/workflows/nf-test-arm.yml lines 43 and 93: change actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
  • .github/workflows/nf-test-gpu.yml lines 40 and 85: change actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

Do not touch nf-test.yml — already on v6 from the template.

While there, scan the same two workflow files for any other action references that have drifted from nf-test.yml (for example nf-core/setup-nextflow, actions/setup-python, nf-core/setup-nf-test). Record any drift in the PR description but only fix the checkout version in this PR — keep the diff focused.

Task 2 — strip timestamp from saved nf-test snapshots (deferred, upstream-blocked)

Every tests/*.nf.test.snap file has metadata of the form:

"timestamp": "2026-05-01T16:24:18.873464265",
"meta": {
    "nf-test": "0.9.5",
    "nextflow": "26.04.0"
}

nf-test does not compare these timestamps, so they don't break CI — but every snapshot regen rotates them, generating diff churn for the reviewer.

Status: Investigated against askimed/nf-test 0.9.5 and confirmed there is no clean way to strip this field from saved snapshots today:

  • SnapshotFileItem hardcodes the timestamp via DateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now()) in its default constructor.
  • SnapshotFile#createJsonGenerator only excludes mapping from the JSON output; there is no config hook for additional excluded fields.
  • nf-test's documented config options (testsDir, workDir, configFile, libDir, profile, withTrace, autoSort, options, ignore, triggers, requires) do not include any snapshot-field filter.
  • A post-write jq/python strip in CI or pre-commit would diverge from what nf-test itself writes on every regen and adds maintenance burden, so it is not being pursued.

This task is deferred pending an upstream feature request against askimed/nf-test for a snapshot-field exclude option. Re-file as a separate issue here once that upstream tracker exists.

Verification

For Task 1:

  • Run any of the changed workflows manually via gh workflow run nf-test-arm.yml (on a feature branch) and confirm CI passes.
  • Confirm the actions/checkout SHA in the rendered workflow run UI matches de0fac2e4500dabe0009e67214ff5f5447ce83dd.

Acceptance criteria

  • .github/workflows/nf-test-arm.yml and nf-test-gpu.yml use the same actions/checkout SHA as the template (de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6)
  • nf-test.yml is unchanged
  • CHANGELOG entry: one sentence under the next release noting the CI hygiene update

Notes for the implementer

  • Do not touch the nf-test.yml workflow itself — it's template-derived, and we want to keep it aligned with the template so nf-core sync doesn't generate conflicts.
  • The paths input declared as required in .github/actions/nf-test/action.yml is also unused, but that file is template content; do not "fix" it here. If it bothers you, raise an issue against nf-core/tools.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions