Skip to content

v2.2.0 - Chongqing #103

v2.2.0 - Chongqing

v2.2.0 - Chongqing #103

Workflow file for this run

name: nf-core merge CI
# Full version × feature matrix — runs when merging dev → master.
# Job dependency chain:
# test-core-public (1.8.1, fast) → test-core-private (2.1.0, 2.2.0)
# → test-features-matrix (QuantUMS, Parquet × versions)
# If the fast 1.8.1 tests fail, all downstream jobs are skipped.
on:
pull_request:
branches:
- master
- main
release:
types: [published]
workflow_dispatch:
env:
NXF_ANSI_LOG: false
concurrency:
group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}"
cancel-in-progress: true
jobs:
# ──────────────────────────────────────────────────────────────────────────
# Stage 1: Core tests with 1.8.1 (public, fast, no auth)
# Must pass before private container tests run.
# ──────────────────────────────────────────────────────────────────────────
test-core-public:
name: "Core [${{ matrix.test_profile }}] DIA-NN=1.8.1"
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
test_profile: ["test_dia", "test_dia_dotd"]
env:
NXF_ANSI_LOG: false
CAPSULE_LOG: none
TEST_PROFILE: ${{ matrix.test_profile }}
EXEC_PROFILE: docker
steps:
- name: Checkout repository
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
- name: Set up Java 17
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
- name: Set up Nextflow
uses: nf-core/setup-nextflow@v2
with:
version: "25.10.4"
- name: Disk space cleanup
uses: jlumbroso/free-disk-space@v1.3.1
- name: Run pipeline with test data
run: |
nextflow run ${GITHUB_WORKSPACE} \
-profile $TEST_PROFILE,$EXEC_PROFILE \
--outdir ${TEST_PROFILE}_results
- name: Gather failed logs
if: failure() || cancelled()
run: |
mkdir -p failed_logs
if [ -f "${TEST_PROFILE}_results/pipeline_info/execution_trace.txt" ]; then
failed=$(grep "FAILED" ${TEST_PROFILE}_results/pipeline_info/execution_trace.txt | cut -f 2)
while read -r line ; do cp $(ls work/${line}*/*.log) failed_logs/ || true ; done <<< "$failed"
fi
- name: Set timestamp
if: always()
run: echo "TS=$(date +%s)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
if: failure() || cancelled()
name: Upload failed logs
with:
name: failed_logs_merge_${{ matrix.test_profile }}_v1_8_1_${{ env.TS }}
include-hidden-files: true
path: failed_logs
overwrite: false
if-no-files-found: warn
- uses: actions/upload-artifact@v4
if: always()
name: Upload log
with:
name: nextflow_merge_${{ matrix.test_profile }}_v1_8_1_${{ env.TS }}.log
include-hidden-files: true
path: .nextflow.log
overwrite: false
if-no-files-found: warn
# ──────────────────────────────────────────────────────────────────────────
# Stage 2a: Core tests with private containers (2.1.0, 2.2.0)
# Only runs after Stage 1 passes.
# ──────────────────────────────────────────────────────────────────────────
test-core-private:
name: "Core [${{ matrix.test_profile }}] DIA-NN=${{ matrix.diann_version }}"
needs: test-core-public
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test_profile: ["test_dia", "test_dia_dotd"]
diann_version: ["diann_v2_1_0", "diann_v2_2_0"]
env:
NXF_ANSI_LOG: false
CAPSULE_LOG: none
TEST_PROFILE: ${{ matrix.test_profile }}
DIANN_VERSION: ${{ matrix.diann_version }}
EXEC_PROFILE: docker
steps:
- name: Checkout repository
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
- name: Set up Java 17
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
- name: Set up Nextflow
uses: nf-core/setup-nextflow@v2
with:
version: "25.10.4"
- name: Log in to GitHub Container Registry
env:
GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }}
run: |
if [ -n "$GHCR_TOKEN" ]; then
echo "${{ secrets.GHCR_TOKEN }}" | docker login ghcr.io -u ${{ secrets.GHCR_USERNAME }} --password-stdin
fi
- name: Disk space cleanup
uses: jlumbroso/free-disk-space@v1.3.1
- name: Run pipeline with test data
run: |
nextflow run ${GITHUB_WORKSPACE} \
-profile $TEST_PROFILE,$DIANN_VERSION,$EXEC_PROFILE \
--outdir ${TEST_PROFILE}_${DIANN_VERSION}_results
- name: Gather failed logs
if: failure() || cancelled()
run: |
mkdir -p failed_logs
if [ -f "${TEST_PROFILE}_${DIANN_VERSION}_results/pipeline_info/execution_trace.txt" ]; then
failed=$(grep "FAILED" ${TEST_PROFILE}_${DIANN_VERSION}_results/pipeline_info/execution_trace.txt | cut -f 2)
while read -r line ; do cp $(ls work/${line}*/*.log) failed_logs/ || true ; done <<< "$failed"
fi
- name: Set timestamp
if: always()
run: echo "TS=$(date +%s)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
if: failure() || cancelled()
name: Upload failed logs
with:
name: failed_logs_merge_${{ matrix.test_profile }}_${{ matrix.diann_version }}_${{ env.TS }}
include-hidden-files: true
path: failed_logs
overwrite: false
if-no-files-found: warn
- uses: actions/upload-artifact@v4
if: always()
name: Upload log
with:
name: nextflow_merge_${{ matrix.test_profile }}_${{ matrix.diann_version }}_${{ env.TS }}.log
include-hidden-files: true
path: .nextflow.log
overwrite: false
if-no-files-found: warn
# ──────────────────────────────────────────────────────────────────────────
# Stage 2b: Feature tests across supported DIA-NN versions
# QuantUMS and Parquet against 2.1.0 and 2.2.0
# Only runs after Stage 1 passes.
# ──────────────────────────────────────────────────────────────────────────
test-features-matrix:
name: "Feature [${{ matrix.test_profile }}] DIA-NN=${{ matrix.diann_version }}"
needs: test-core-public
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
# QuantUMS × {2.1.0, 2.2.0}
- test_profile: test_dia_quantums
diann_version: diann_v2_1_0
- test_profile: test_dia_quantums
diann_version: diann_v2_2_0
# Parquet × {2.1.0, 2.2.0}
- test_profile: test_dia_parquet
diann_version: diann_v2_1_0
- test_profile: test_dia_parquet
diann_version: diann_v2_2_0
env:
NXF_ANSI_LOG: false
CAPSULE_LOG: none
TEST_PROFILE: ${{ matrix.test_profile }}
DIANN_VERSION: ${{ matrix.diann_version }}
EXEC_PROFILE: docker
steps:
- name: Checkout repository
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
- name: Set up Java 17
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
- name: Set up Nextflow
uses: nf-core/setup-nextflow@v2
with:
version: "25.10.4"
- name: Log in to GitHub Container Registry
env:
GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }}
run: |
if [ -n "$GHCR_TOKEN" ]; then
echo "${{ secrets.GHCR_TOKEN }}" | docker login ghcr.io -u ${{ secrets.GHCR_USERNAME }} --password-stdin
fi
- name: Disk space cleanup
uses: jlumbroso/free-disk-space@v1.3.1
- name: Run pipeline with test data
run: |
nextflow run ${GITHUB_WORKSPACE} \
-profile $TEST_PROFILE,$DIANN_VERSION,$EXEC_PROFILE \
--outdir ${TEST_PROFILE}_${DIANN_VERSION}_results
- name: Gather failed logs
if: failure() || cancelled()
run: |
mkdir -p failed_logs
if [ -f "${TEST_PROFILE}_${DIANN_VERSION}_results/pipeline_info/execution_trace.txt" ]; then
failed=$(grep "FAILED" ${TEST_PROFILE}_${DIANN_VERSION}_results/pipeline_info/execution_trace.txt | cut -f 2)
while read -r line ; do cp $(ls work/${line}*/*.log) failed_logs/ || true ; done <<< "$failed"
fi
- name: Set timestamp
if: always()
run: echo "TS=$(date +%s)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
if: failure() || cancelled()
name: Upload failed logs
with:
name: failed_logs_merge_${{ matrix.test_profile }}_${{ matrix.diann_version }}_${{ env.TS }}
include-hidden-files: true
path: failed_logs
overwrite: false
if-no-files-found: warn
- uses: actions/upload-artifact@v4
if: always()
name: Upload log
with:
name: nextflow_merge_${{ matrix.test_profile }}_${{ matrix.diann_version }}_${{ env.TS }}.log
include-hidden-files: true
path: .nextflow.log
overwrite: false
if-no-files-found: warn