From 640d7dd4b9294d3cdf76aabac9e91655bf19e5e9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:05:23 +0000 Subject: [PATCH 1/9] Fix CI: Ensure confirm-pass job runs for markdown-only PRs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The nf-test workflow used paths-ignore at the workflow level, which prevented the entire workflow (including the confirm-pass job) from running when only docs/markdown files were changed. This caused PRs with only documentation changes to fail merge requirements if confirm-pass was configured as a required status check. Changes: - Remove paths-ignore from workflow trigger to ensure workflow always runs - Add dorny/paths-filter action to detect docs/markdown-only changes - Make nf-test job conditional on skip_tests output - Update confirm-pass job to always run and pass when tests are skipped - Add skip_tests output to nf-test-changes job This ensures the confirm-pass required check is always present while still skipping expensive test execution for documentation-only changes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/nf-test.yml | 37 ++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index a2a0d91fb..3a57c07d7 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -1,12 +1,6 @@ name: Run nf-test on: pull_request: - paths-ignore: - - "docs/**" - - "**/meta.yml" - - "**/*.md" - - "**/*.png" - - "**/*.svg" release: types: [published] workflow_dispatch: @@ -33,6 +27,7 @@ jobs: outputs: shard: ${{ steps.set-shards.outputs.shard }} total_shards: ${{ steps.set-shards.outputs.total_shards }} + skip_tests: ${{ steps.filter.outputs.skip_tests }} steps: - name: Clean Workspace # Purge the workspace in case it's running on a self-hosted runner run: | @@ -44,7 +39,19 @@ jobs: with: fetch-depth: 0 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 + id: filter + with: + filters: | + skip_tests: + - 'docs/**' + - '**/meta.yml' + - '**/*.md' + - '**/*.png' + - '**/*.svg' + - name: get number of shards + if: steps.filter.outputs.skip_tests != 'true' id: set-shards uses: ./.github/actions/get-shards env: @@ -53,6 +60,7 @@ jobs: max_shards: 14 - name: debug + if: steps.filter.outputs.skip_tests != 'true' run: | echo ${{ steps.set-shards.outputs.shard }} echo ${{ steps.set-shards.outputs.total_shards }} @@ -60,7 +68,7 @@ jobs: nf-test: name: "${{ matrix.profile }} | ${{ matrix.NXF_VER }} | ${{ matrix.shard }}/${{ needs.nf-test-changes.outputs.total_shards }}" needs: [nf-test-changes] - if: ${{ needs.nf-test-changes.outputs.total_shards != '0' }} + if: ${{ needs.nf-test-changes.outputs.skip_tests != 'true' && needs.nf-test-changes.outputs.total_shards != '0' }} runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test - runner=4cpu-linux-x64 @@ -121,22 +129,28 @@ jobs: fi confirm-pass: - needs: [nf-test] + needs: [nf-test-changes, nf-test] if: always() runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-confirm-pass - runner=2cpu-linux-x64 steps: + - name: Tests were skipped (docs/markdown only changes) + if: ${{ needs.nf-test-changes.outputs.skip_tests == 'true' }} + run: | + echo "Tests were skipped - only docs/markdown files changed" + exit 0 + - name: One or more tests failed (excluding latest-everything) - if: ${{ contains(needs.*.result, 'failure') }} + if: ${{ needs.nf-test-changes.outputs.skip_tests != 'true' && contains(needs.*.result, 'failure') }} run: exit 1 - name: One or more tests cancelled - if: ${{ contains(needs.*.result, 'cancelled') }} + if: ${{ needs.nf-test-changes.outputs.skip_tests != 'true' && contains(needs.*.result, 'cancelled') }} run: exit 1 - name: All tests ok - if: ${{ contains(needs.*.result, 'success') }} + if: ${{ needs.nf-test-changes.outputs.skip_tests != 'true' && contains(needs.*.result, 'success') }} run: exit 0 - name: debug-print @@ -145,4 +159,5 @@ jobs: echo "::group::DEBUG: `needs` Contents" echo "DEBUG: toJSON(needs) = ${{ toJSON(needs) }}" echo "DEBUG: toJSON(needs.*.result) = ${{ toJSON(needs.*.result) }}" + echo "DEBUG: skip_tests = ${{ needs.nf-test-changes.outputs.skip_tests }}" echo "::endgroup::" From 1148f65f702aa665555b0b11d7ea46bca90b373f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:06:21 +0000 Subject: [PATCH 2/9] Update CHANGELOG.md for PR #1618 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d42fcdde3..24b03c21a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Enhancements and fixes - [PR #1608](https://github.com/nf-core/rnaseq/pull/1608) - Bump version after release 3.21.0 +- [PR #1618](https://github.com/nf-core/rnaseq/pull/1618) - Fix CI: Ensure confirm-pass job runs for markdown-only PRs ## [[3.21.0](https://github.com/nf-core/rnaseq/releases/tag/3.21.0)] - 2025-09-18 From 5b8e22b2eac552f3dd011aa2f82ff398f6bfcde3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:07:39 +0000 Subject: [PATCH 3/9] Trigger CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude From 7081d5e4a4ade1407c93769e88414a13460d4c8a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:13:55 +0000 Subject: [PATCH 4/9] Fix paths-filter to use 'every' quantifier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The default 'some' quantifier returns true if ANY file matches ANY pattern, which incorrectly skips tests when a PR has mixed changes (e.g., both README.md and src/main.nf). Using 'every' ensures ALL files must match at least one pattern for tests to be skipped. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/nf-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 3a57c07d7..a483ad73d 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -42,6 +42,7 @@ jobs: - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 id: filter with: + predicate-quantifier: 'every' filters: | skip_tests: - 'docs/**' From 659580eedb8af3ad4b6f66f43158af4a74fe3823 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:17:35 +0000 Subject: [PATCH 5/9] Prettier --- .github/workflows/nf-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index a483ad73d..4ca95a723 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -42,7 +42,7 @@ jobs: - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 id: filter with: - predicate-quantifier: 'every' + predicate-quantifier: "every" filters: | skip_tests: - 'docs/**' From 96b3d05c52147e7e6deb569d68fe86706fe6c3e5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:25:08 +0000 Subject: [PATCH 6/9] Don't lint CI --- .nf-core.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.nf-core.yml b/.nf-core.yml index 97363fb73..9066ef805 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,4 +1,5 @@ lint: + actions_ci: false files_exist: - conf/modules.config files_unchanged: From a1dbd8a0cc69997d8be6c1aba508af515ca45a62 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:33:53 +0000 Subject: [PATCH 7/9] Fix ci exclusion --- .nf-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nf-core.yml b/.nf-core.yml index 9066ef805..bf0502b2d 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,5 +1,5 @@ lint: - actions_ci: false + actions_nf_test: false files_exist: - conf/modules.config files_unchanged: From 72faa29e4846c403dd52da561f28c600eba2df52 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:42:31 +0000 Subject: [PATCH 8/9] TEST COMMIT: Trigger nf-test workflow (will revert) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit modifies nextflow.config to test that code changes properly trigger the full nf-test suite with the new CI configuration. This validates that the paths-filter correctly identifies non-documentation changes. This commit will be reverted after CI runs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- nextflow.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nextflow.config b/nextflow.config index 707255aab..ebddff226 100644 --- a/nextflow.config +++ b/nextflow.config @@ -6,6 +6,8 @@ ---------------------------------------------------------------------------------------- */ +// TEMPORARY: Testing CI workflow - will be reverted + // Global default params, used in configs params { From bc00d8cf699278f0a44debff2b2925f7c9716f13 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Nov 2025 14:44:37 +0000 Subject: [PATCH 9/9] Revert "TEST COMMIT: Trigger nf-test workflow (will revert)" This reverts commit 72faa29e4846c403dd52da561f28c600eba2df52. --- nextflow.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/nextflow.config b/nextflow.config index ebddff226..707255aab 100644 --- a/nextflow.config +++ b/nextflow.config @@ -6,8 +6,6 @@ ---------------------------------------------------------------------------------------- */ -// TEMPORARY: Testing CI workflow - will be reverted - // Global default params, used in configs params {