diff --git a/.github/workflows/wave.yml b/.github/workflows/wave.yml new file mode 100644 index 00000000000..d450ef24d34 --- /dev/null +++ b/.github/workflows/wave.yml @@ -0,0 +1,138 @@ +name: Wave +# When environment.yml is changed +on: + pull_request: + paths: + - "**/environment.yml" + +# TODO On complete call testing CI +# TODO Skip testing CI if any changes to environment.yml + +env: + WAVE_VER: "1.5.0" + NFTEST_VER: "0.9.1" + +jobs: + gen-matrix: + name: generate-matrix + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 + + - name: Calculate file differences + id: diff + uses: tj-actions/changed-files@v44 + with: + json: true + quotepath: false + # TODO Add Dockerfiles + files: | + modules/**/environment.yml + - name: Debug + run: echo ${{ steps.diff.outputs.all_changed_files }} + - id: set-matrix + run: echo "matrix={\"profile\":[\"docker\", \"singularity\"],\"files\":${{ steps.diff.outputs.all_changed_files }} }" >> "$GITHUB_OUTPUT" + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + build: + if: "${{ fromJson(needs.gen-matrix.outputs.matrix) }}" + needs: gen-matrix + name: build + runs-on: ubuntu-latest + timeout-minutes: 60 + strategy: + fail-fast: false + matrix: "${{ fromJson(needs.gen-matrix.outputs.matrix) }}" + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 + + - name: Install wave-cli + run: | + wget -q https://github.com/seqeralabs/wave-cli/releases/download/v${WAVE_VER}/wave-${WAVE_VER}-linux-x86_64 + sudo mv wave-${WAVE_VER}-linux-x86_64 /usr/local/bin/wave + chmod +x /usr/local/bin/wave + + - name: Create a registry name + uses: actions/github-script@v7 + id: registry-name + with: + result-encoding: string + script: | + return '${{ matrix.files }}'.replace('modules/nf-core/', '').replace('/environment.yml', '').replace('/', '_'); + + - name: Build container + if: matrix.profile == 'docker' + run: | + wave --conda-file "${{ matrix.files }}" \ + --freeze \ + --await \ + --tower-token ${{ secrets.TOWER_ACCESS_TOKEN }} \ + --tower-workspace-id ${{ secrets.TOWER_WORKSPACE_ID }} + + - name: Build Singularity + if: matrix.profile == 'singularity' + run: | + wave --conda-file "${{ matrix.files }}" \ + --freeze \ + --await \ + --tower-token ${{ secrets.TOWER_ACCESS_TOKEN }} \ + --tower-workspace-id ${{ secrets.TOWER_WORKSPACE_ID }} \ + --singularity + + # TODO Build from Dockerfiles + + # bump-versions: + # needs: gen-matrix + # name: bump-versions + # runs-on: ubuntu-latest + # steps: + # - uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4 + # with: + # distribution: "temurin" + # java-version: "17" + + # - uses: nf-core/setup-nextflow@v2 + + # - uses: nf-core/setup-nf-test@v1 + # with: + # version: ${{ env.NFTEST_VER }} + + # - name: Bump Snapshot Versions + # env: + # # NFT_DIFF: "pdiff" + # # NFT_DIFF_ARGS: "--line-numbers --width 120 --expand-tabs=2" + # SENTIEON_LICSRVR_IP: ${{ secrets.SENTIEON_LICSRVR_IP }} + # SENTIEON_AUTH_MECH: "GitHub Actions - token" + # run: | + # # use "docker_self_hosted" if it runs on self-hosted runner and matrix.profile=docker + # if [ "${{ matrix.profile }}" == "docker" ]; then + # PROFILE="docker_self_hosted" + # else + # PROFILE=${{ matrix.profile }} + # fi + + # NFT_WORKDIR=~ \ + # nf-test test \ + # --profile=${{ matrix.profile }} \ + # --tap=test.tap \ + # # --ci \ + # --verbose \ + # --only-changed \ + # # --shard ${{ matrix.shard }}/${{ env.TOTAL_SHARDS }} \ + # # --filter ${{ matrix.filter }} \ + # --follow-dependencies \ + # --tag version \ + # --update-snapshot + + # - name: Commit & push version bumps + # run: | + # git config user.email "core@nf-co.re" + # git config user.name "nf-core-bot" + # git config push.default upstream + # git add . + # git status + # git commit -m "[automated] Bump versions snapshot" + # git push diff --git a/modules/nf-core/bowtie/align/environment.yml b/modules/nf-core/bowtie/align/environment.yml index 4434c7e7143..61bd69c2c7a 100644 --- a/modules/nf-core/bowtie/align/environment.yml +++ b/modules/nf-core/bowtie/align/environment.yml @@ -2,5 +2,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bowtie=1.3.0 - - bioconda::samtools=1.16.1 + # renovate: datasource=conda depName=bioconda/bowtie + - bioconda::bowtie=1.3.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.20 diff --git a/modules/nf-core/bowtie/align/main.nf b/modules/nf-core/bowtie/align/main.nf index 5e72b02a678..3dee85ffb4d 100644 --- a/modules/nf-core/bowtie/align/main.nf +++ b/modules/nf-core/bowtie/align/main.nf @@ -4,8 +4,8 @@ process BOWTIE_ALIGN { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-ffbf83a6b0ab6ec567a336cf349b80637135bca3:c84c7c55c45af231883d9ff4fe706ac44c479c36-0' : - 'biocontainers/mulled-v2-ffbf83a6b0ab6ec567a336cf349b80637135bca3:c84c7c55c45af231883d9ff4fe706ac44c479c36-0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/c8/c8c0819a9b1f520c49c933e667ae50de2a0730ece4c8b9efe79ac5e403963a9f/data' : + 'community​.wave​.seqera​.io/library/bowtie_samtools:e1a14e1ce4e0170d' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/bowtie/build/environment.yml b/modules/nf-core/bowtie/build/environment.yml index ab5a842215c..61bd69c2c7a 100644 --- a/modules/nf-core/bowtie/build/environment.yml +++ b/modules/nf-core/bowtie/build/environment.yml @@ -2,4 +2,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bowtie=1.3.0 + # renovate: datasource=conda depName=bioconda/bowtie + - bioconda::bowtie=1.3.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.20 diff --git a/modules/nf-core/bowtie/build/main.nf b/modules/nf-core/bowtie/build/main.nf index d5b4c690404..0f6b9d4d1bf 100644 --- a/modules/nf-core/bowtie/build/main.nf +++ b/modules/nf-core/bowtie/build/main.nf @@ -4,8 +4,8 @@ process BOWTIE_BUILD { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bowtie:1.3.0--py38hed8969a_1' : - 'biocontainers/bowtie:1.3.0--py38hed8969a_1' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/c8/c8c0819a9b1f520c49c933e667ae50de2a0730ece4c8b9efe79ac5e403963a9f/data' : + 'community​.wave​.seqera​.io/library/bowtie_samtools:e1a14e1ce4e0170d' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/bowtie/build/tests/main.nf.test b/modules/nf-core/bowtie/build/tests/main.nf.test index 25fb3dad83b..81209a7b1fc 100644 --- a/modules/nf-core/bowtie/build/tests/main.nf.test +++ b/modules/nf-core/bowtie/build/tests/main.nf.test @@ -34,6 +34,7 @@ nextflow_process { test("sarscov2 - fasta - stub") { options "-stub" + tag "stub" when { process { @@ -48,7 +49,8 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(process.out).match() }, + { assert snapshot(path(process.out.versions.get(0)).yaml).match("versions") }, ) } diff --git a/modules/nf-core/samtools/view/environment.yml b/modules/nf-core/samtools/view/environment.yml index 62054fc97ac..02cda6e6a3b 100644 --- a/modules/nf-core/samtools/view/environment.yml +++ b/modules/nf-core/samtools/view/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: + # renovate: datasource=conda depName=bioconda/htslib - bioconda::htslib=1.21 + # renovate: datasource=conda depName=bioconda/samtools - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf index 37e05cec887..41fa3d6a0b9 100644 --- a/modules/nf-core/samtools/view/main.nf +++ b/modules/nf-core/samtools/view/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_VIEW { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9e/9edc2564215d5cd137a8b25ca8a311600987186d406b092022444adf3c4447f7/data' : + 'community​.wave​.seqera​.io/library/htslib_samtools:1​.21--6cb89bfd40cbaabf' }" input: tuple val(meta), path(input), path(index)