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: Test successful pipeline download with 'nf-core pipelines download' | |
# Run the workflow when: | |
# - dispatched manually | |
# - when a PR is opened or reopened to main branch | |
# - the head branch of the pull request is updated, i.e. if fixes for a release are pushed last minute to dev. | |
on: | |
workflow_dispatch: | |
inputs: | |
testbranch: | |
description: "The specific branch you wish to utilize for the test execution of nf-core pipelines download." | |
required: true | |
default: "dev" | |
pull_request: | |
types: | |
- opened | |
- edited | |
- synchronize | |
branches: | |
- main | |
pull_request_target: | |
branches: | |
- main | |
env: | |
NXF_ANSI_LOG: false | |
jobs: | |
download: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install Nextflow | |
uses: nf-core/setup-nextflow@v2 | |
- name: Disk space cleanup | |
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 | |
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 | |
with: | |
python-version: "3.12" | |
architecture: "x64" | |
- name: Setup Apptainer | |
uses: eWaterCycle/setup-apptainer@4bb22c52d4f63406c49e94c804632975787312b3 # v2.0.0 | |
with: | |
apptainer-version: 1.3.4 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install git+https://github.com/nf-core/tools.git@dev | |
- name: Get the repository name and current branch set as environment variable | |
run: | | |
echo "REPO_LOWERCASE=${GITHUB_REPOSITORY,,}" >> ${GITHUB_ENV} | |
echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> ${GITHUB_ENV} | |
echo "REPO_BRANCH=${{ github.event.inputs.testbranch || 'dev' }}" >> ${GITHUB_ENV} | |
- name: Make a cache directory for the container images | |
run: | | |
mkdir -p ./singularity_container_images | |
- name: Download the pipeline | |
env: | |
NXF_SINGULARITY_CACHEDIR: ./singularity_container_images | |
run: | | |
nf-core pipelines download ${{ env.REPO_LOWERCASE }} \ | |
--revision ${{ env.REPO_BRANCH }} \ | |
--outdir ./${{ env.REPOTITLE_LOWERCASE }} \ | |
--compress "none" \ | |
--container-system 'singularity' \ | |
--container-library "quay.io" -l "docker.io" -l "community.wave.seqera.io" \ | |
--container-cache-utilisation 'amend' \ | |
--download-configuration 'yes' | |
- name: Inspect download | |
run: tree ./${{ env.REPOTITLE_LOWERCASE }} | |
- name: Count the downloaded number of container images | |
id: count_initial | |
run: | | |
image_count=$(ls -1 ./singularity_container_images | wc -l | xargs) | |
echo "Initial container image count: $image_count" | |
echo "IMAGE_COUNT_INITIAL=$image_count" >> ${GITHUB_ENV} | |
- name: Run the downloaded pipeline (stub) | |
id: stub_run_pipeline | |
continue-on-error: true | |
env: | |
NXF_SINGULARITY_CACHEDIR: ./singularity_container_images | |
NXF_SINGULARITY_HOME_MOUNT: true | |
run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results | |
- name: Run the downloaded pipeline (stub run not supported) | |
id: run_pipeline | |
if: ${{ job.steps.stub_run_pipeline.status == failure() }} | |
env: | |
NXF_SINGULARITY_CACHEDIR: ./singularity_container_images | |
NXF_SINGULARITY_HOME_MOUNT: true | |
run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -profile test,singularity --outdir ./results | |
- name: Count the downloaded number of container images | |
id: count_afterwards | |
run: | | |
image_count=$(ls -1 ./singularity_container_images | wc -l | xargs) | |
echo "Post-pipeline run container image count: $image_count" | |
echo "IMAGE_COUNT_AFTER=$image_count" >> ${GITHUB_ENV} | |
- name: Compare container image counts | |
run: | | |
if [ "${{ env.IMAGE_COUNT_INITIAL }}" -ne "${{ env.IMAGE_COUNT_AFTER }}" ]; then | |
initial_count=${{ env.IMAGE_COUNT_INITIAL }} | |
final_count=${{ env.IMAGE_COUNT_AFTER }} | |
difference=$((final_count - initial_count)) | |
echo "$difference additional container images were \n downloaded at runtime . The pipeline has no support for offline runs!" | |
tree ./singularity_container_images | |
exit 1 | |
else | |
echo "The pipeline can be downloaded successfully!" | |
fi |