diff --git a/.github/workflows/pytest-workflow.yml b/.github/workflows/pytest-workflow.yml index 6f395409..5ece35b8 100644 --- a/.github/workflows/pytest-workflow.yml +++ b/.github/workflows/pytest-workflow.yml @@ -6,14 +6,12 @@ on: branches: [master] jobs: - changes: - name: Check for changes + ########### + # Modules # + ########### + module_changes: + name: Check for changes in the modules runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - filter: - ["tests/config/pytest_modules.yml", "tests/config/pytest_subworkflows.yml"] outputs: # Expose matched filters as job 'modules' output variable modules: ${{ steps.filter.outputs.changes }} @@ -23,19 +21,122 @@ jobs: - uses: dorny/paths-filter@v2 id: filter with: - filters: ${{ matrix.filter }} + filters: "tests/config/pytest_modules.yml" - test: + module_test: runs-on: ubuntu-20.04 name: ${{ matrix.tags }} ${{ matrix.profile }} ${{ matrix.nxf_version }} - needs: changes - if: needs.changes.outputs.modules != '[]' + needs: module_changes + if: needs.module_changes.outputs.modules != '[]' strategy: fail-fast: false matrix: nxf_version: ["21.04.0"] - tags: ["${{ fromJson(needs.changes.outputs.modules) }}"] + tags: ["${{ fromJson(needs.modules_changes.outputs.modules) }}"] + profile: ["docker", "singularity", "conda"] + env: + NXF_ANSI_LOG: false + steps: + - uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: "3.x" + + - uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: "3.x" + + - name: Install Python dependencies + run: python -m pip install --upgrade pip pytest-workflow + + - uses: actions/cache@v2 + with: + path: /usr/local/bin/nextflow + key: ${{ runner.os }}-nextflow-${{ matrix.nxf_version }} + restore-keys: | + ${{ runner.os }}-nextflow- + + - name: Install Nextflow + env: + NXF_VER: ${{ matrix.nxf_version }} + CAPSULE_LOG: none + run: | + wget -qO- get.nextflow.io | bash + sudo mv nextflow /usr/local/bin/ + + - name: Set up Singularity + if: matrix.profile == 'singularity' + uses: eWaterCycle/setup-singularity@v5 + with: + singularity-version: 3.7.1 + + - name: Setup miniconda + if: matrix.profile == 'conda' + uses: conda-incubator/setup-miniconda@v2 + with: + auto-update-conda: true + channels: conda-forge,bioconda,defaults + python-version: ${{ matrix.python-version }} + + - name: Conda clean + if: matrix.profile == 'conda' + run: conda clean -a + + # Test the module + - name: Run pytest-workflow + # only use one thread for pytest-workflow to avoid race condition on conda cache. + run: NF_CORE_MODULES_TEST=1 TMPDIR=~ PROFILE=${{ matrix.profile }} pytest --tag ${{ matrix.tags }} --symlink --kwdof + + - name: Upload logs on failure + if: failure() + uses: actions/upload-artifact@v2 + with: + name: logs-${{ matrix.profile }}-${{ matrix.nxf_version }} + path: | + /home/runner/pytest_workflow_*/*/.nextflow.log + /home/runner/pytest_workflow_*/*/log.out + /home/runner/pytest_workflow_*/*/log.err + /home/runner/pytest_workflow_*/*/work + + ################ + # Subworkflows # + ################ + subworkflow_changes: + name: Check for changes in the subworkflows + runs-on: ubuntu-latest + outputs: + # Expose matched filters as job 'subworkflows' output variable + subworkflows: ${{ steps.filter.outputs.changes }} + steps: + - uses: actions/checkout@v2 + + - uses: dorny/paths-filter@v2 + id: filter + with: + filters: "tests/config/pytest_subworkflows.yml" + + subworkflow_test: + runs-on: ubuntu-20.04 + + name: ${{ matrix.tags }} ${{ matrix.profile }} ${{ matrix.nxf_version }} + needs: subworkflow_changes + if: needs.subworkflow_changes.outputs.subworkflows != '[]' + strategy: + fail-fast: false + matrix: + nxf_version: ["21.04.0"] + tags: ["${{ fromJson(needs.subworkflow_changes.outputs.subworkflows) }}"] profile: ["docker", "singularity", "conda"] env: NXF_ANSI_LOG: false