Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use new nf-test features #6286

Open
wants to merge 28 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
c2f20e4
ci: Attempt to split everything out
edmundmiller Aug 23, 2024
8897f68
ci: Add changed since, sharding, and ci
edmundmiller Aug 23, 2024
2e20ff4
ci: Add filter to try to get jobs split up
edmundmiller Aug 23, 2024
ea0de23
ci: Switch to only-changed
edmundmiller Aug 23, 2024
2c5b4bd
ci: See if follow-dependencies works without "related-tests"
edmundmiller Aug 23, 2024
6322086
ci: Remove skipped tests
edmundmiller Aug 23, 2024
71d9e5a
ci: Actually use the nf-test version
edmundmiller Aug 23, 2024
afd049d
ci: module => process
edmundmiller Aug 23, 2024
a823ee3
ci: Clean up job names
edmundmiller Aug 23, 2024
0d2c26c
dummy: Make a change
edmundmiller Aug 23, 2024
97f6406
ci: Skip test.tap
edmundmiller Aug 23, 2024
c486922
ci: Add fetch-depth
edmundmiller Aug 23, 2024
d58ecdb
ci: Clean up name
edmundmiller Aug 23, 2024
52a826d
ci: Lint everything
edmundmiller Aug 23, 2024
1043d64
ci: Get the job names clean
edmundmiller Aug 23, 2024
94c2453
ci: Add hide-progress on linting
edmundmiller Aug 23, 2024
ab5194b
ci: Add psuedocode for conda-fail.yml
edmundmiller Aug 24, 2024
2a218e3
test: Snapshot the versions contents, not the hash
edmundmiller Sep 10, 2024
e833cd5
ci: Keep running nf-core lint the way it was
Sep 18, 2024
392ffe7
ci: Move conda skips out
edmundmiller Sep 24, 2024
af2d917
ci: Address a comment
edmundmiller Sep 24, 2024
372625e
style: Move prettier and editorconfig to pre-commit
edmundmiller Sep 24, 2024
1670c52
ci: Add note about nf-core lint pre-commit
edmundmiller Sep 24, 2024
adf6658
chore: Copy over conda skips
edmundmiller Sep 24, 2024
d0caf9e
ci: only-changed => changed-since
edmundmiller Sep 30, 2024
3b97a33
Add confirm-pass
edmundmiller Oct 14, 2024
865787a
ci: dynamically set shards
edmundmiller Oct 17, 2024
c141a14
ci: Run 3 process jobs per CI run as an example
edmundmiller Oct 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 145 additions & 0 deletions .github/conda_skip.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# TODO What do we do with these?
# I think we can require Docker,modules,Shard 1..Singularity,subworkflows,3 and skip the condas now
# - 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/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/ensemblvep/vep
# - profile: conda
# path: modules/nf-core/fastk/fastk
# - 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/mcquant
# - 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: 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
168 changes: 168 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
name: Run Linting
on:
pull_request:
branches: [master]
merge_group:
types: [checks_requested]
branches: [master]
workflow_dispatch:
inputs:
runners:
description: "Runners to test on"
type: choice
options:
- "ubuntu-latest"
- "self-hosted"
default: "self-hosted"

# Cancel if a newer run is started
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity
NXF_SINGULARITY_LIBRARYDIR: ${{ github.workspace }}/.singularity
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
# FIXME Flip this off once we get to less than a couple hundred. Adding
# this so it will only run against changed files. It'll make it much
# easier to fix these as they come up rather than everything at once.
with:
extra_args: ""

###################
# nf-core linting #
###################
# TODO Move these to pre-commit
# https://github.com/nf-core/tools/pull/3141
nf-core-changes:
name: nf-core-changes
runs-on: ubuntu-latest
outputs:
tags: ${{ steps.filter.outputs.changes }}
modules: ${{ steps.tags.outputs.modules }}
subworkflows: ${{ steps.tags.outputs.subworkflows }}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
fetch-depth: 2 # To retrieve the preceding commit.

# TODO: change back to using dorny/paths-filter when https://github.com/dorny/paths-filter/pull/133 is implemented
- uses: mirpedrol/paths-filter@main
id: filter
with:
filters: "tests/config/pytest_modules.yml"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This relies on the pytest_modules.yml tags, is that what you want?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nah, probably just want it to run on any module that's changed. We could include both the nf-test and pytest_modules ymls though I think.

token: ""

- name: Fetch module tags
id: tags
run: |
echo modules=$(echo '${{ steps.filter.outputs.changes }}' | jq -c '. | map(select(contains("modules"))) | map(gsub("modules/"; ""))') >> $GITHUB_OUTPUT
echo subworkflows=$(echo '${{ steps.filter.outputs.changes }}' | jq '. | map(select(contains("subworkflow"))) | map(gsub("subworkflows/"; ""))') >> $GITHUB_OUTPUT

- name: debug
run: |
echo ${{ steps.tags.outputs.modules }}
echo ${{ steps.tags.outputs.subworkflows }}

nf-core-lint-modules:
runs-on: ${{ github.event.inputs.runners || 'self-hosted' }}
name: nf-core lint modules
needs: nf-core-changes
if: ${{ (needs.nf-core-changes.outputs.modules != '[]') }}
strategy:
fail-fast: false
matrix:
tags: "${{ fromJson(needs.nf-core-changes.outputs.modules) }}"
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4

- name: Set up Python
uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5
with:
python-version: "3.11"

- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
id: cache-pip
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip
restore-keys: |
${{ runner.os }}-pip

- name: Install pip
run: python -m pip install --upgrade pip

- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73 # v4
with:
distribution: "temurin"
java-version: "17"

- name: Setup Nextflow
uses: nf-core/setup-nextflow@v2

- name: Install nf-core tools development version
run: python -m pip install --upgrade --force-reinstall git+https://github.com/nf-core/tools.git@dev

- name: Lint module ${{ matrix.tags }}
run: nf-core modules lint ${{ matrix.tags }}

nf-core-lint-subworkflows:
runs-on: ubuntu-latest
name: nf-core lint subworkflows
needs: nf-core-changes
if: ${{ (needs.nf-core-changes.outputs.subworkflows != '[]') }}
strategy:
fail-fast: false
matrix:
tags: "${{ fromJson(needs.nf-core-changes.outputs.subworkflows) }}"
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4

- name: Set up Python
uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5
with:
python-version: "3.11"

- name: Install pip
run: python -m pip install --upgrade pip

- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73 # v4
with:
distribution: "temurin"
java-version: "17"

- name: Setup Nextflow
uses: nf-core/setup-nextflow@561fcfc7146dcb12e3871909b635ab092a781f34 # v2

- name: Install nf-core tools development version
run: python -m pip install --upgrade --force-reinstall git+https://github.com/nf-core/tools.git@dev

- name: Lint module ${{ matrix.tags }}
run: nf-core subworkflows lint ${{ matrix.tags }}

confirm-pass:
runs-on: ubuntu-latest
needs: [nf-core-lint-modules, nf-core-lint-subworkflows]
if: always()
steps:
- name: All tests ok
if: ${{ success() || !contains(needs.*.result, 'failure') }}
run: exit 0
- name: One or more tests failed
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1

- name: debug-print
if: always()
run: |
echo "toJSON(needs) = ${{ toJSON(needs) }}"
echo "toJSON(needs.*.result) = ${{ toJSON(needs.*.result) }}"
Loading