diff --git a/.github/include.yaml b/.github/include.yaml new file mode 100644 index 00000000..a3629f4c --- /dev/null +++ b/.github/include.yaml @@ -0,0 +1,10 @@ +".": + - ./.github/workflows/** + - ./nf-test.config + - ./nextflow.config +tests: + - ./assets/* + - ./bin/* + - ./conf/* + - ./main.nf + - ./nextflow_schema.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8346f837..1c7cb680 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,12 @@ name: nf-core CI # This workflow runs the pipeline with the minimal test dataset to check that it completes without any syntax errors on: + push: + branches: + - dev pull_request: + release: + types: [published] env: NXF_ANSI_LOG: false @@ -13,52 +18,21 @@ env: concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" cancel-in-progress: true -jobs: - nf-test-changes: - name: Check for changes - runs-on: ubuntu-latest - outputs: - nf_test_files: ${{ steps.list.outputs.components }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: List nf-test files - id: list - uses: adamrtalbot/detect-nf-test-changes@v0.0.2 - with: - head: ${{ github.sha }} - base: origin/${{ github.base_ref }} - include: .github/include.yaml - - - name: print list of nf-test files - run: | - echo ${{ steps.list.outputs.components }} +jobs: test: - name: ${{ matrix.nf_test_files }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} - needs: [nf-test-changes] - if: needs.nf-test-changes.outputs.nf_test_files != '[]' runs-on: ubuntu-latest strategy: fail-fast: false matrix: - NXF_VER: - - "latest-everything" - - "23.04" - nf_test_files: ["${{ fromJson(needs.nf-test-changes.outputs.nf_test_files) }}"] - profile: - - "docker" - + shard: [1, 2, 3, 4] + NXF_VER: ["latest-stable"] # TODO Test minimum version on release + profile: ["docker"] steps: - name: Check out pipeline code uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - - - name: Install Nextflow - uses: nf-core/setup-nextflow@v2 with: - version: "${{ matrix.NXF_VER }}" + fetch-depth: 0 - uses: actions/setup-python@v4 with: @@ -70,43 +44,25 @@ jobs: python -m pip install --upgrade pip pip install pdiff - - uses: nf-core/setup-nf-test@v1 - - - name: Run nf-test - run: | - nf-test test --verbose ${{ matrix.nf_test_files }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap + - uses: nf-core/setup-nextflow@v2 + with: + version: "${{ matrix.NXF_VER }}" - - uses: pcolby/tap-summary@v1 + - uses: nf-core/setup-nf-test@v1 with: - path: >- - test.tap + version: ${{ env.NFT_VER }} - - name: Output log on failure - if: failure() + - name: Run Tests (Shard ${{ matrix.shard }}/${{ strategy.job-total }}) run: | - sudo apt install bat > /dev/null - batcat --decorations=always --color=always ${{ github.workspace }}/.nf-test/tests/*/meta/nextflow.log + nf-test test \ + --ci \ + --shard ${{ matrix.shard }}/${{ strategy.job-total }} \ + --changed-since HEAD^ \ + --profile "+${{ matrix.profile }}" \ + --filter pipeline - name: Publish Test Report uses: mikepenz/action-junit-report@v3 if: always() # always run even if the previous step fails with: report_paths: test.xml - - confirm-pass: - runs-on: ubuntu-latest - needs: [test] - if: always() - steps: - - name: All tests ok - if: ${{ !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) }}"