Add CI to build mulled containers with Wave #115
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 "[email protected]" | |
# 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 | |