From 06bfb914a81215e85ed88e6c6dd23f7c8bf862f4 Mon Sep 17 00:00:00 2001 From: mashehu Date: Tue, 7 Jan 2025 17:49:49 +0100 Subject: [PATCH 1/3] add filter step to exclude some tests for some profiles --- .github/conda_skip.yml | 194 ---------------------------------- .github/skip_nf_test.yml | 190 +++++++++++++++++++++++++++++++++ .github/workflows/nf-test.yml | 17 ++- 3 files changed, 206 insertions(+), 195 deletions(-) delete mode 100644 .github/conda_skip.yml create mode 100644 .github/skip_nf_test.yml diff --git a/.github/conda_skip.yml b/.github/conda_skip.yml deleted file mode 100644 index 77a498169e4..00000000000 --- a/.github/conda_skip.yml +++ /dev/null @@ -1,194 +0,0 @@ -# TODO What do we do with these? -# I think we can require Docker,modules,Shard 1..Singularity,subworkflows,3 and skip the condas now -exclude: - - path: modules/nf-core/nf-test - - profile: conda - path: modules/nf-core/angsd/gl - - profile: conda - path: modules/nf-core/annotsv/installannotations - - profile: conda - path: modules/nf-core/happy/sompy - - profile: conda - path: modules/nf-core/backsub - - profile: conda - path: modules/nf-core/bakta/bakta - - profile: conda - path: modules/nf-core/bakta/baktadbdownload - - profile: conda - path: modules/nf-core/bases2fastq - - profile: conda - path: modules/nf-core/bcl2fastq - - profile: conda - path: modules/nf-core/bclconvert - - profile: conda - path: modules/nf-core/celesta - - profile: conda - path: modules/nf-core/cellpose - - profile: conda - path: modules/nf-core/cellranger/count - - profile: conda - path: modules/nf-core/cellranger/mkfastq - - profile: conda - path: modules/nf-core/cellranger/mkgtf - - profile: conda - path: modules/nf-core/cellranger/mkref - - profile: conda - path: modules/nf-core/cellranger/mkvdjref - - profile: conda - path: modules/nf-core/cellranger/multi - - profile: conda - path: modules/nf-core/cellranger/vdj - - profile: conda - path: modules/nf-core/checkqc - - profile: conda - path: modules/nf-core/custom/dumpsoftwareversions - - profile: conda - path: modules/nf-core/deepcell/mesmer - - profile: conda - path: modules/nf-core/deepsomatic - - profile: singularity - path: modules/nf-core/deepsomatic - - profile: conda - path: modules/nf-core/deepvariant - - profile: conda - path: modules/nf-core/deepvariant/callvariants - - profile: conda - path: modules/nf-core/deepvariant/makeexamples - - profile: conda - path: modules/nf-core/deepvariant/postprocessvariants - - profile: conda - path: modules/nf-core/deepvariant/rundeepvariant - - profile: conda - path: modules/nf-core/deepvariant/vcfstatsreport - - profile: conda - path: modules/nf-core/doubletdetection - - profile: conda - path: modules/nf-core/ensemblvep/vep - - profile: conda - path: modules/nf-core/fastk/fastk - - profile: conda - path: modules/nf-core/cellrangerarc/mkgtf - - profile: conda - path: modules/nf-core/fastk/histex - - profile: conda - path: modules/nf-core/fastk/merge - - profile: conda - path: modules/nf-core/fcs/fcsadaptor - - profile: conda - path: modules/nf-core/fcs/fcsgx - - profile: conda - path: modules/nf-core/ganon/buildcustom - - profile: conda - path: modules/nf-core/ganon/classify - - profile: conda - path: modules/nf-core/ganon/report - - profile: conda - path: modules/nf-core/ganon/table - - profile: conda - path: modules/nf-core/gatk4/cnnscorevariants - - profile: conda - path: modules/nf-core/gatk4/determinegermlinecontigploidy - - profile: conda - path: modules/nf-core/genescopefk - - profile: conda - path: modules/nf-core/ilastik/multicut - - profile: conda - path: modules/nf-core/ilastik/pixelclassification - - profile: conda - path: modules/nf-core/imputeme/vcftoprs - - profile: conda - path: modules/nf-core/mcstaging/imc2mc - - profile: conda - path: modules/nf-core/mcquant - - profile: conda - path: modules/nf-core/mcstaging/phenoimager2mc - - profile: conda - path: modules/nf-core/merquryfk/katcomp - - profile: conda - path: modules/nf-core/merquryfk/katgc - - profile: conda - path: modules/nf-core/merquryfk/merquryfk - - profile: conda - path: modules/nf-core/merquryfk/ploidyplot - - profile: conda - path: modules/nf-core/molkartgarage/clahe - - profile: conda - path: modules/nf-core/quartonotebook - - profile: conda - path: modules/nf-core/scimap/spatiallda - - profile: conda - path: modules/nf-core/sentieon/bwaindex - - profile: conda - path: modules/nf-core/sentieon/bwamem - - profile: conda - path: modules/nf-core/sentieon/datametrics - - profile: conda - path: modules/nf-core/sentieon/dedup - - profile: conda - path: modules/nf-core/sentieon/qualcal - - profile: conda - path: modules/nf-core/spaceranger/mkgtf - - profile: conda - path: modules/nf-core/spaceranger/mkref - - profile: conda - path: modules/nf-core/spaceranger/count - - profile: conda - path: modules/nf-core/spotiflow - - profile: conda - path: modules/nf-core/svanalyzer/svbenchmark - - profile: conda - path: modules/nf-core/universc - - profile: singularity - path: modules/nf-core/universc - - profile: conda - path: modules/nf-core/vt/decompose - - profile: singularity - path: modules/nf-core/bases2fastq - - profile: conda - path: modules/nf-core/wittyer - - profile: conda - path: modules/nf-core/islandpath - - profile: conda - path: modules/nf-core/scimap/mcmicro - - profile: conda - path: modules/nf-core/parabricks/fq2bammeth - - profile: docker_self_hosted - path: modules/nf-core/parabricks/fq2bammeth - - profile: singularity - path: modules/nf-core/parabricks/fq2bammeth - - profile: conda - path: modules/nf-core/parabricks/fq2bam - - profile: docker_self_hosted - path: modules/nf-core/parabricks/fq2bam - - profile: singularity - path: modules/nf-core/parabricks/fq2bam - - profile: conda - path: subworkflows/nf-core/vcf_annotate_ensemblvep - - profile: conda - path: subworkflows/nf-core/bcl_demultiplex - - profile: conda - path: subworkflows/nf-core/deepvariant - - profile: conda - path: subworkflows/nf-core/fastq_align_bamcmp_bwa - - profile: conda - path: subworkflows/nf-core/fastq_align_bwa - - profile: conda - path: subworkflows/nf-core/fasta_newick_epang_gappa - - profile: conda - path: modules/nf-core/xeniumranger/relabel - - profile: conda - path: modules/nf-core/xeniumranger/rename - - profile: conda - path: modules/nf-core/xeniumranger/resegment - - profile: conda - path: modules/nf-core/xeniumranger/import-segmentation - - profile: conda - path: modules/nf-core/parabricks/mutectcaller - - profile: conda - path: modules/nf-core/parabricks/dbsnp - - profile: conda - path: modules/nf-core/parabricks/indexgvcf - - profile: conda - path: modules/nf-core/parabricks/genotypegvcf - - profile: conda - path: modules/nf-core/parabricks/applybqsr diff --git a/.github/skip_nf_test.yml b/.github/skip_nf_test.yml new file mode 100644 index 00000000000..db8691afa78 --- /dev/null +++ b/.github/skip_nf_test.yml @@ -0,0 +1,190 @@ +- profile: conda + path: modules/nf-core/angsd/gl +- profile: conda + path: modules/nf-core/annotsv/installannotations +- profile: conda + path: modules/nf-core/happy/sompy +- profile: conda + path: modules/nf-core/backsub +- profile: conda + path: modules/nf-core/bakta/bakta +- profile: conda + path: modules/nf-core/bakta/baktadbdownload +- profile: conda + path: modules/nf-core/bases2fastq +- profile: conda + path: modules/nf-core/bcl2fastq +- profile: conda + path: modules/nf-core/bclconvert +- profile: conda + path: modules/nf-core/celesta +- profile: conda + path: modules/nf-core/cellpose +- profile: conda + path: modules/nf-core/cellranger/count +- profile: conda + path: modules/nf-core/cellranger/mkfastq +- profile: conda + path: modules/nf-core/cellranger/mkgtf +- profile: conda + path: modules/nf-core/cellranger/mkref +- profile: conda + path: modules/nf-core/cellranger/mkvdjref +- profile: conda + path: modules/nf-core/cellranger/multi +- profile: conda + path: modules/nf-core/cellranger/vdj +- profile: conda + path: modules/nf-core/checkqc +- profile: conda + path: modules/nf-core/custom/dumpsoftwareversions +- profile: conda + path: modules/nf-core/deepcell/mesmer +- profile: conda + path: modules/nf-core/deepsomatic +- profile: singularity + path: modules/nf-core/deepsomatic +- profile: conda + path: modules/nf-core/deepvariant +- profile: conda + path: modules/nf-core/deepvariant/callvariants +- profile: conda + path: modules/nf-core/deepvariant/makeexamples +- profile: conda + path: modules/nf-core/deepvariant/postprocessvariants +- profile: conda + path: modules/nf-core/deepvariant/rundeepvariant +- profile: conda + path: modules/nf-core/deepvariant/vcfstatsreport +- profile: conda + path: modules/nf-core/doubletdetection +- profile: conda + path: modules/nf-core/ensemblvep/vep +- profile: conda + path: modules/nf-core/fastk/fastk +- profile: conda + path: modules/nf-core/cellrangerarc/mkgtf +- profile: conda + path: modules/nf-core/fastk/histex +- profile: conda + path: modules/nf-core/fastk/merge +- profile: conda + path: modules/nf-core/fcs/fcsadaptor +- profile: conda + path: modules/nf-core/fcs/fcsgx +- profile: conda + path: modules/nf-core/ganon/buildcustom +- profile: conda + path: modules/nf-core/ganon/classify +- profile: conda + path: modules/nf-core/ganon/report +- profile: conda + path: modules/nf-core/ganon/table +- profile: conda + path: modules/nf-core/gatk4/cnnscorevariants +- profile: conda + path: modules/nf-core/gatk4/determinegermlinecontigploidy +- profile: conda + path: modules/nf-core/genescopefk +- profile: conda + path: modules/nf-core/ilastik/multicut +- profile: conda + path: modules/nf-core/ilastik/pixelclassification +- profile: conda + path: modules/nf-core/imputeme/vcftoprs +- profile: conda + path: modules/nf-core/mcstaging/imc2mc +- profile: conda + path: modules/nf-core/mcquant +- profile: conda + path: modules/nf-core/mcstaging/phenoimager2mc +- profile: conda + path: modules/nf-core/merquryfk/katcomp +- profile: conda + path: modules/nf-core/merquryfk/katgc +- profile: conda + path: modules/nf-core/merquryfk/merquryfk +- profile: conda + path: modules/nf-core/merquryfk/ploidyplot +- profile: conda + path: modules/nf-core/molkartgarage/clahe +- profile: conda + path: modules/nf-core/quartonotebook +- profile: conda + path: modules/nf-core/scimap/spatiallda +- profile: conda + path: modules/nf-core/sentieon/bwaindex +- profile: conda + path: modules/nf-core/sentieon/bwamem +- profile: conda + path: modules/nf-core/sentieon/datametrics +- profile: conda + path: modules/nf-core/sentieon/dedup +- profile: conda + path: modules/nf-core/sentieon/qualcal +- profile: conda + path: modules/nf-core/spaceranger/mkgtf +- profile: conda + path: modules/nf-core/spaceranger/mkref +- profile: conda + path: modules/nf-core/spaceranger/count +- profile: conda + path: modules/nf-core/spotiflow +- profile: conda + path: modules/nf-core/svanalyzer/svbenchmark +- profile: conda + path: modules/nf-core/universc +- profile: singularity + path: modules/nf-core/universc +- profile: conda + path: modules/nf-core/vt/decompose +- profile: singularity + path: modules/nf-core/bases2fastq +- profile: conda + path: modules/nf-core/wittyer +- profile: conda + path: modules/nf-core/islandpath +- profile: conda + path: modules/nf-core/scimap/mcmicro +- profile: conda + path: modules/nf-core/parabricks/fq2bammeth +- profile: docker_self_hosted + path: modules/nf-core/parabricks/fq2bammeth +- profile: singularity + path: modules/nf-core/parabricks/fq2bammeth +- profile: conda + path: modules/nf-core/parabricks/fq2bam +- profile: docker_self_hosted + path: modules/nf-core/parabricks/fq2bam +- profile: singularity + path: modules/nf-core/parabricks/fq2bam +- profile: conda + path: subworkflows/nf-core/vcf_annotate_ensemblvep +- profile: conda + path: subworkflows/nf-core/bcl_demultiplex +- profile: conda + path: subworkflows/nf-core/deepvariant +- profile: conda + path: subworkflows/nf-core/fastq_align_bamcmp_bwa +- profile: conda + path: subworkflows/nf-core/fastq_align_bwa +- profile: conda + path: subworkflows/nf-core/fasta_newick_epang_gappa +- profile: conda + path: modules/nf-core/xeniumranger/relabel +- profile: conda + path: modules/nf-core/xeniumranger/rename +- profile: conda + path: modules/nf-core/xeniumranger/resegment +- profile: conda + path: modules/nf-core/xeniumranger/import-segmentation +- profile: conda + path: modules/nf-core/parabricks/mutectcaller +- profile: conda + path: modules/nf-core/parabricks/dbsnp +- profile: conda + path: modules/nf-core/parabricks/indexgvcf +- profile: conda + path: modules/nf-core/parabricks/genotypegvcf +- profile: conda + path: modules/nf-core/parabricks/applybqsr diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 027b661e362..aa2207e6167 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -92,6 +92,21 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: fetch-depth: 0 + + - name: Filter paths + id: filter + run: | + # Parse the input paths array + PATHS='${{ needs.nf-test-changes.outputs.paths }}' + + # Get all paths for current profile from skip_nf_test.yml + ALLOWED=$(yq eval '.[] | select(.profile == strenv(PROFILE)) | .path' .github/skip_nf_test.yml) + + # Filter input paths to only those allowed for profile + FILTERED=$(echo "$PATHS" | yq eval '. - [.[] | select(. as $path | any($path | test(load(".github/skip_nf_test.yml") | .[] | select(.profile == strenv(PROFILE)) | .path)))]' -) + + echo "filtered_paths=$FILTERED" >> $GITHUB_OUTPUT + - name: Run nf-test Action uses: ./.github/actions/nf-test-action env: @@ -103,7 +118,7 @@ jobs: profile: ${{ matrix.profile }} shard: ${{ matrix.shard }} total_shards: ${{ env.TOTAL_SHARDS }} - paths: "${{ join(fromJson(needs.nf-test-changes.outputs.paths), ' ') }}" + paths: "${{ join(fromJson(steps.filter.outputs.filtered_paths), ' ') }}" confirm-pass: runs-on: ubuntu-latest From 08fd0075952ef5e215fa4a8cab12ef90031c1d61 Mon Sep 17 00:00:00 2001 From: mashehu Date: Tue, 7 Jan 2025 17:52:03 +0100 Subject: [PATCH 2/3] remove unnecessary code --- .github/workflows/nf-test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index aa2207e6167..0ca385f6256 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -99,9 +99,6 @@ jobs: # Parse the input paths array PATHS='${{ needs.nf-test-changes.outputs.paths }}' - # Get all paths for current profile from skip_nf_test.yml - ALLOWED=$(yq eval '.[] | select(.profile == strenv(PROFILE)) | .path' .github/skip_nf_test.yml) - # Filter input paths to only those allowed for profile FILTERED=$(echo "$PATHS" | yq eval '. - [.[] | select(. as $path | any($path | test(load(".github/skip_nf_test.yml") | .[] | select(.profile == strenv(PROFILE)) | .path)))]' -) From a67a7222aaae9a0842941e20405e0b4625917a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20H=C3=B6rtenhuber?= Date: Thu, 9 Jan 2025 15:07:49 +0000 Subject: [PATCH 3/3] fix filter logic based on https://github.com/nf-core/modules/pull/7274 --- .github/actions/nf-test-action/action.yml | 39 ++++- .github/skip_nf_test.json | 93 +++++++++++ .github/skip_nf_test.yml | 190 ---------------------- .github/workflows/nf-test.yml | 34 +++- 4 files changed, 156 insertions(+), 200 deletions(-) create mode 100644 .github/skip_nf_test.json delete mode 100644 .github/skip_nf_test.yml diff --git a/.github/actions/nf-test-action/action.yml b/.github/actions/nf-test-action/action.yml index a2539a6ba2f..4aa3410ba24 100644 --- a/.github/actions/nf-test-action/action.yml +++ b/.github/actions/nf-test-action/action.yml @@ -83,12 +83,39 @@ runs: --filter process,workflow \ ${{ inputs.paths }} - # TODO If no test.tap, then make one to spoof? - - uses: pcolby/tap-summary@0959cbe1d4422e62afc65778cdaea6716c41d936 # v1 - if: ${{ inputs.path != '' }} - with: - path: >- - test.tap + # Save the absolute path of the test.tap file to the output + echo "tap_file_path=$(realpath test.tap)" >> $GITHUB_OUTPUT + + - name: Generate test summary + if: always() + shell: bash + run: | + # Add header if it doesn't exist (using a token file to track this) + if [ ! -f ".summary_header" ]; then + echo "# 🚀 nf-test Results" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "| Status | Test Name | Profile | Shard |" >> $GITHUB_STEP_SUMMARY + echo "|:------:|-----------|---------|-------|" >> $GITHUB_STEP_SUMMARY + touch .summary_header + fi + + if [ -f test.tap ]; then + while IFS= read -r line; do + if [[ $line =~ ^ok ]]; then + test_name="${line#ok }" + # Remove the test number from the beginning + test_name="${test_name#* }" + echo "| ✅ | ${test_name} | ${{ inputs.profile }} | ${{ inputs.shard }}/${{ inputs.total_shards }} |" >> $GITHUB_STEP_SUMMARY + elif [[ $line =~ ^not\ ok ]]; then + test_name="${line#not ok }" + # Remove the test number from the beginning + test_name="${test_name#* }" + echo "| ❌ | ${test_name} | ${{ inputs.profile }} | ${{ inputs.shard }}/${{ inputs.total_shards }} |" >> $GITHUB_STEP_SUMMARY + fi + done < test.tap + else + echo "| ⚠️ | No test results found | ${{ inputs.profile }} | ${{ inputs.shard }}/${{ inputs.total_shards }} |" >> $GITHUB_STEP_SUMMARY + fi - name: Clean up if: always() diff --git a/.github/skip_nf_test.json b/.github/skip_nf_test.json new file mode 100644 index 00000000000..47336236310 --- /dev/null +++ b/.github/skip_nf_test.json @@ -0,0 +1,93 @@ +{ + "conda": [ + "modules/nf-core/angsd/gl", + "modules/nf-core/annotsv/installannotations", + "modules/nf-core/backsub", + "modules/nf-core/bakta/bakta", + "modules/nf-core/bakta/baktadbdownload", + "modules/nf-core/bases2fastq", + "modules/nf-core/bcl2fastq", + "modules/nf-core/bclconvert", + "modules/nf-core/celesta", + "modules/nf-core/cellpose", + "modules/nf-core/cellranger/count", + "modules/nf-core/cellranger/mkfastq", + "modules/nf-core/cellranger/mkgtf", + "modules/nf-core/cellranger/mkref", + "modules/nf-core/cellranger/mkvdjref", + "modules/nf-core/cellranger/multi", + "modules/nf-core/cellranger/vdj", + "modules/nf-core/cellrangerarc/mkgtf", + "modules/nf-core/checkqc", + "modules/nf-core/custom/dumpsoftwareversions", + "modules/nf-core/deepcell/mesmer", + "modules/nf-core/deepsomatic", + "modules/nf-core/deepvariant", + "modules/nf-core/deepvariant/callvariants", + "modules/nf-core/deepvariant/makeexamples", + "modules/nf-core/deepvariant/postprocessvariants", + "modules/nf-core/deepvariant/rundeepvariant", + "modules/nf-core/deepvariant/vcfstatsreport", + "modules/nf-core/doubletdetection", + "modules/nf-core/ensemblvep/vep", + "modules/nf-core/fastk/fastk", + "modules/nf-core/fastk/histex", + "modules/nf-core/fastk/merge", + "modules/nf-core/fcs/fcsadaptor", + "modules/nf-core/fcs/fcsgx", + "modules/nf-core/ganon/buildcustom", + "modules/nf-core/ganon/classify", + "modules/nf-core/ganon/report", + "modules/nf-core/ganon/table", + "modules/nf-core/gatk4/cnnscorevariants", + "modules/nf-core/gatk4/determinegermlinecontigploidy", + "modules/nf-core/genescopefk", + "modules/nf-core/happy/sompy", + "modules/nf-core/ilastik/multicut", + "modules/nf-core/ilastik/pixelclassification", + "modules/nf-core/imputeme/vcftoprs", + "modules/nf-core/islandpath", + "modules/nf-core/mcquant", + "modules/nf-core/mcstaging/imc2mc", + "modules/nf-core/mcstaging/phenoimager2mc", + "modules/nf-core/merquryfk/katcomp", + "modules/nf-core/merquryfk/katgc", + "modules/nf-core/merquryfk/merquryfk", + "modules/nf-core/merquryfk/ploidyplot", + "modules/nf-core/molkartgarage/clahe", + "modules/nf-core/parabricks", + "modules/nf-core/quartonotebook", + "modules/nf-core/scimap/mcmicro", + "modules/nf-core/scimap/spatiallda", + "modules/nf-core/sentieon/bwaindex", + "modules/nf-core/sentieon/bwamem", + "modules/nf-core/sentieon/datametrics", + "modules/nf-core/sentieon/dedup", + "modules/nf-core/sentieon/qualcal", + "modules/nf-core/spaceranger/count", + "modules/nf-core/spaceranger/mkgtf", + "modules/nf-core/spaceranger/mkref", + "modules/nf-core/spotiflow", + "modules/nf-core/svanalyzer/svbenchmark", + "modules/nf-core/universc", + "modules/nf-core/vt/decompose", + "modules/nf-core/wittyer", + "modules/nf-core/xeniumranger/import-segmentation", + "modules/nf-core/xeniumranger/relabel", + "modules/nf-core/xeniumranger/rename", + "modules/nf-core/xeniumranger/resegment", + "subworkflows/nf-core/bcl_demultiplex", + "subworkflows/nf-core/deepvariant", + "subworkflows/nf-core/fasta_newick_epang_gappa", + "subworkflows/nf-core/fastq_align_bamcmp_bwa", + "subworkflows/nf-core/fastq_align_bwa", + "subworkflows/nf-core/vcf_annotate_ensemblvep" + ], + "docker_self_hosted": ["modules/nf-core/parabricks"], + "singularity": [ + "modules/nf-core/bases2fastq", + "modules/nf-core/deepsomatic", + "modules/nf-core/parabricks", + "modules/nf-core/universc" + ] +} diff --git a/.github/skip_nf_test.yml b/.github/skip_nf_test.yml deleted file mode 100644 index db8691afa78..00000000000 --- a/.github/skip_nf_test.yml +++ /dev/null @@ -1,190 +0,0 @@ -- profile: conda - path: modules/nf-core/angsd/gl -- profile: conda - path: modules/nf-core/annotsv/installannotations -- profile: conda - path: modules/nf-core/happy/sompy -- profile: conda - path: modules/nf-core/backsub -- profile: conda - path: modules/nf-core/bakta/bakta -- profile: conda - path: modules/nf-core/bakta/baktadbdownload -- profile: conda - path: modules/nf-core/bases2fastq -- profile: conda - path: modules/nf-core/bcl2fastq -- profile: conda - path: modules/nf-core/bclconvert -- profile: conda - path: modules/nf-core/celesta -- profile: conda - path: modules/nf-core/cellpose -- profile: conda - path: modules/nf-core/cellranger/count -- profile: conda - path: modules/nf-core/cellranger/mkfastq -- profile: conda - path: modules/nf-core/cellranger/mkgtf -- profile: conda - path: modules/nf-core/cellranger/mkref -- profile: conda - path: modules/nf-core/cellranger/mkvdjref -- profile: conda - path: modules/nf-core/cellranger/multi -- profile: conda - path: modules/nf-core/cellranger/vdj -- profile: conda - path: modules/nf-core/checkqc -- profile: conda - path: modules/nf-core/custom/dumpsoftwareversions -- profile: conda - path: modules/nf-core/deepcell/mesmer -- profile: conda - path: modules/nf-core/deepsomatic -- profile: singularity - path: modules/nf-core/deepsomatic -- profile: conda - path: modules/nf-core/deepvariant -- profile: conda - path: modules/nf-core/deepvariant/callvariants -- profile: conda - path: modules/nf-core/deepvariant/makeexamples -- profile: conda - path: modules/nf-core/deepvariant/postprocessvariants -- profile: conda - path: modules/nf-core/deepvariant/rundeepvariant -- profile: conda - path: modules/nf-core/deepvariant/vcfstatsreport -- profile: conda - path: modules/nf-core/doubletdetection -- profile: conda - path: modules/nf-core/ensemblvep/vep -- profile: conda - path: modules/nf-core/fastk/fastk -- profile: conda - path: modules/nf-core/cellrangerarc/mkgtf -- profile: conda - path: modules/nf-core/fastk/histex -- profile: conda - path: modules/nf-core/fastk/merge -- profile: conda - path: modules/nf-core/fcs/fcsadaptor -- profile: conda - path: modules/nf-core/fcs/fcsgx -- profile: conda - path: modules/nf-core/ganon/buildcustom -- profile: conda - path: modules/nf-core/ganon/classify -- profile: conda - path: modules/nf-core/ganon/report -- profile: conda - path: modules/nf-core/ganon/table -- profile: conda - path: modules/nf-core/gatk4/cnnscorevariants -- profile: conda - path: modules/nf-core/gatk4/determinegermlinecontigploidy -- profile: conda - path: modules/nf-core/genescopefk -- profile: conda - path: modules/nf-core/ilastik/multicut -- profile: conda - path: modules/nf-core/ilastik/pixelclassification -- profile: conda - path: modules/nf-core/imputeme/vcftoprs -- profile: conda - path: modules/nf-core/mcstaging/imc2mc -- profile: conda - path: modules/nf-core/mcquant -- profile: conda - path: modules/nf-core/mcstaging/phenoimager2mc -- profile: conda - path: modules/nf-core/merquryfk/katcomp -- profile: conda - path: modules/nf-core/merquryfk/katgc -- profile: conda - path: modules/nf-core/merquryfk/merquryfk -- profile: conda - path: modules/nf-core/merquryfk/ploidyplot -- profile: conda - path: modules/nf-core/molkartgarage/clahe -- profile: conda - path: modules/nf-core/quartonotebook -- profile: conda - path: modules/nf-core/scimap/spatiallda -- profile: conda - path: modules/nf-core/sentieon/bwaindex -- profile: conda - path: modules/nf-core/sentieon/bwamem -- profile: conda - path: modules/nf-core/sentieon/datametrics -- profile: conda - path: modules/nf-core/sentieon/dedup -- profile: conda - path: modules/nf-core/sentieon/qualcal -- profile: conda - path: modules/nf-core/spaceranger/mkgtf -- profile: conda - path: modules/nf-core/spaceranger/mkref -- profile: conda - path: modules/nf-core/spaceranger/count -- profile: conda - path: modules/nf-core/spotiflow -- profile: conda - path: modules/nf-core/svanalyzer/svbenchmark -- profile: conda - path: modules/nf-core/universc -- profile: singularity - path: modules/nf-core/universc -- profile: conda - path: modules/nf-core/vt/decompose -- profile: singularity - path: modules/nf-core/bases2fastq -- profile: conda - path: modules/nf-core/wittyer -- profile: conda - path: modules/nf-core/islandpath -- profile: conda - path: modules/nf-core/scimap/mcmicro -- profile: conda - path: modules/nf-core/parabricks/fq2bammeth -- profile: docker_self_hosted - path: modules/nf-core/parabricks/fq2bammeth -- profile: singularity - path: modules/nf-core/parabricks/fq2bammeth -- profile: conda - path: modules/nf-core/parabricks/fq2bam -- profile: docker_self_hosted - path: modules/nf-core/parabricks/fq2bam -- profile: singularity - path: modules/nf-core/parabricks/fq2bam -- profile: conda - path: subworkflows/nf-core/vcf_annotate_ensemblvep -- profile: conda - path: subworkflows/nf-core/bcl_demultiplex -- profile: conda - path: subworkflows/nf-core/deepvariant -- profile: conda - path: subworkflows/nf-core/fastq_align_bamcmp_bwa -- profile: conda - path: subworkflows/nf-core/fastq_align_bwa -- profile: conda - path: subworkflows/nf-core/fasta_newick_epang_gappa -- profile: conda - path: modules/nf-core/xeniumranger/relabel -- profile: conda - path: modules/nf-core/xeniumranger/rename -- profile: conda - path: modules/nf-core/xeniumranger/resegment -- profile: conda - path: modules/nf-core/xeniumranger/import-segmentation -- profile: conda - path: modules/nf-core/parabricks/mutectcaller -- profile: conda - path: modules/nf-core/parabricks/dbsnp -- profile: conda - path: modules/nf-core/parabricks/indexgvcf -- profile: conda - path: modules/nf-core/parabricks/genotypegvcf -- profile: conda - path: modules/nf-core/parabricks/applybqsr diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 0ca385f6256..ebfdedd2019 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -96,15 +96,41 @@ jobs: - name: Filter paths id: filter run: | - # Parse the input paths array PATHS='${{ needs.nf-test-changes.outputs.paths }}' + FILTERED=$(jq -n -c \ + --arg profile "${{ matrix.profile }}" \ + --argjson input_paths "$PATHS" \ + ' + def get_skip_list: inputs | .[$profile] // []; - # Filter input paths to only those allowed for profile - FILTERED=$(echo "$PATHS" | yq eval '. - [.[] | select(. as $path | any($path | test(load(".github/skip_nf_test.yml") | .[] | select(.profile == strenv(PROFILE)) | .path)))]' -) + # Get skip list and filter + get_skip_list as $skip_patterns | - echo "filtered_paths=$FILTERED" >> $GITHUB_OUTPUT + # Debug output + ($skip_patterns | "Skip patterns: " + (map(" - " + .) | join(","))) | + debug | + + # Do the actual filtering + $input_paths | map( + . as $path | + select($skip_patterns | all(. as $pattern | ($path | startswith($pattern)) | not)) + ) as $result | + + # Debug what was skipped + (if ($input_paths - $result) | length > 0 then + "Skipped: " + (($input_paths - $result) | map(" - " + .) | join(",")) + else + "No paths skipped" + end) | + debug | + + $result + ' .github/skip_nf_test.json) + + echo "filtered_paths=${FILTERED}" >> $GITHUB_OUTPUT - name: Run nf-test Action + if: ${{steps.filter.outputs.filtered_paths != '[]'}} uses: ./.github/actions/nf-test-action env: SENTIEON_ENCRYPTION_KEY: ${{ secrets.SENTIEON_ENCRYPTION_KEY }}