Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
eca3fc1
fix(sv): judge a Delly RDCN on chrX and chrY by the sample's sex and …
GeiserX Nov 6, 2026
bcc082e
fix(sv): stop step 05 on an SV VCF with more than one sample
GeiserX Nov 6, 2026
6f40667
fix(recheck): see image digest changes, skip opt-in steps the run lef…
GeiserX Nov 6, 2026
ae61a34
build(renovate): track the nf-weblog plugin pin of the live site
GeiserX Nov 6, 2026
feb1f11
fix(sv): pass a large integral RDCN to the depth rule as digits
GeiserX Nov 6, 2026
bc9dede
ci(e2e): keep the table builders' downloads in the data cache, mirror…
GeiserX Nov 6, 2026
04122f8
test(e2e): fail a case that ran no check
GeiserX Nov 6, 2026
b61283b
ci(e2e): run the cases when .github/actions changes, and refuse globs…
GeiserX Nov 6, 2026
f921e9f
test(e2e): run step 53 and setup.sh --locityper-data on the fixture
GeiserX Nov 6, 2026
a0924d2
ci(sv): give build-sv-rule-regions.sh a --check mode, a cache and --list
GeiserX Nov 6, 2026
9ba3195
docs(testing): the catalogs data entry, the no-check rule, the scope …
GeiserX Nov 6, 2026
3f2d011
Merge remote-tracking branch 'origin/main' into pgp/ci-e2e
GeiserX Nov 6, 2026
a154ca7
fix(sv): let only a PASS, non-reference Manta call hide a Delly or CN…
GeiserX Nov 6, 2026
acf47c9
fix(recheck): leave out the pins of opt-in steps a default run never …
GeiserX Nov 6, 2026
d597aac
test(e2e): keep the Locityper case to HLA-DQB1, well inside its time …
GeiserX Nov 7, 2026
9a3b0e3
fix(sv): keep a Delly 0/0 or ./. call out of AnnotSV's input
GeiserX Nov 7, 2026
23bece0
test(e2e): give the Locityper case 90 minutes, since jellyfish alone …
GeiserX Nov 7, 2026
efd8efe
test(archaic): fail a chr22 Neanderthal share over the published 95th…
GeiserX Nov 7, 2026
977642d
fix(archaic): mark the rows outside the strict mask instead of droppi…
GeiserX Nov 7, 2026
9995ab8
docs(archaic): say the strict mask now marks rows and what the chr22 …
GeiserX Nov 7, 2026
d1a7843
ci(e2e): the Locityper case's measured time, and review fixes to the …
GeiserX Nov 7, 2026
3e0d642
test(archaic): guard the chr22 share at 1,200 kb and set the kept-row…
GeiserX Nov 7, 2026
fe19b43
fix(sv): repin TRExplorer v2.1 to the asset upstream rebuilt, and reb…
GeiserX Nov 7, 2026
90510af
test(fake-docker): run steps 03c and 18, which no case ran
GeiserX Nov 7, 2026
bbe150d
fix(setup): size Locityper's jellyfish hash to the reference
GeiserX Nov 7, 2026
91c592d
fix(setup): keep the jellyfish hash size above 2^31, and test how it …
GeiserX Nov 7, 2026
9c67355
test(archaic): make the e2e header say what the chr22 gate is
GeiserX Nov 7, 2026
7d3f120
train: #314 on main and the PRs queued before it
GeiserX Nov 7, 2026
6e664a1
train: #311 on main and the PRs queued before it
GeiserX Nov 7, 2026
4d2d37b
train: #322 on main and the PRs queued before it
GeiserX Nov 7, 2026
0faaf18
train: #323 on main and the PRs queued before it
GeiserX Nov 7, 2026
97f7e8e
train: #324 on main and the PRs queued before it
GeiserX Nov 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ on:
- 'nextflow_schema.json'
- 'versions.env'
- '.github/workflows/e2e.yml'
- '.github/actions/**'
- 'tests/fixtures/annotsv/class45.sh'
- 'tests/fixtures/comphet/make_fixture.py'
- 'tests/fixtures/consumer_export/sites.tsv.gz'
Expand Down Expand Up @@ -636,6 +637,7 @@ jobs:
grep -qx archaic-ancestry-1 "$list" && echo "data_archaic=true" >> "$GITHUB_OUTPUT"
grep -qx bash-step-08-hla "$list" && echo "data_hla=true" >> "$GITHUB_OUTPUT"
grep -qx prs-scores-and-run-options-1-strand-sex "$list" && echo "data_pgs=true" >> "$GITHUB_OUTPUT"
grep -qxE 'callability-1-catalog|cn-intervals-1-catalog' "$list" && echo "data_catalogs=true" >> "$GITHUB_OUTPUT"
echo "list=${list}" >> "$GITHUB_OUTPUT"

# Before the base outputs: the base leg pulled the same images.
Expand Down Expand Up @@ -691,6 +693,10 @@ jobs:
# of two IPD-IMGT/HLA releases and GENCODE's genes and exons
# (bash-step-08-hla, which then runs with the network blocked), and the
# four real PGS Catalog score files of prs-scores-and-run-options-1.
# A third keyed the same way: the pinned downloads of the two table
# builders (GENCODE's GTF from EBI among them) that
# callability-1-catalog and cn-intervals-1-catalog rebuild their
# tables from.
- name: Data cache keys
id: data-keys
run: |
Expand All @@ -699,6 +705,7 @@ jobs:
echo "archaic=e2e-data-1kg-sites-${ARCHAIC_1KG_SITES_MD5}" | tee -a "$GITHUB_OUTPUT"
echo "hla=$(scripts/ci/e2e-run.sh --data-key hla)" | tee -a "$GITHUB_OUTPUT"
echo "pgs=$(scripts/ci/e2e-run.sh --data-key pgs)" | tee -a "$GITHUB_OUTPUT"
echo "catalogs=$(scripts/ci/e2e-run.sh --data-key catalogs)" | tee -a "$GITHUB_OUTPUT"

- name: Restore cached data, MoChA panel
id: data-mocha
Expand Down Expand Up @@ -732,6 +739,14 @@ jobs:
path: ${{ env.E2E_DATA_CACHE }}/pgs
key: ${{ steps.data-keys.outputs.pgs }}

- name: Restore cached data, table builders' downloads
id: data-catalogs
if: steps.cases-list.outputs.data_catalogs == 'true'
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ env.E2E_DATA_CACHE }}/catalogs
key: ${{ steps.data-keys.outputs.catalogs }}

# The PGS Catalog's synthetic HAPNEST panel (prs-2-ancestry and
# prs-scores-and-run-options-2, 268 MB), from EBI's FTP server, keyed
# on the sha256 tests/e2e/lib.sh pins. The cases take it from
Expand Down Expand Up @@ -778,15 +793,16 @@ jobs:
E2E_BASE_OUT: ${{ matrix.job == 'base' && format('{0}/base.tar.zst', runner.temp) || '' }}
E2E_BASE_IN: ${{ matrix.job != 'base' && format('{0}/e2e-base/base.tar.zst', runner.temp) || '' }}
# Keep the downloads to the end of the job only when a save step uses them.
E2E_DATA_KEEP: ${{ (github.ref == 'refs/heads/main' || inputs.save_images) && ((steps.cases-list.outputs.data_mocha == 'true' && steps.data-mocha.outputs.cache-hit != 'true') || (steps.cases-list.outputs.data_archaic == 'true' && steps.data-archaic.outputs.cache-hit != 'true') || (steps.cases-list.outputs.data_hla == 'true' && steps.data-hla.outputs.cache-hit != 'true') || (steps.cases-list.outputs.data_pgs == 'true' && steps.data-pgs.outputs.cache-hit != 'true')) && 'true' || 'false' }}
E2E_DATA_KEEP: ${{ (github.ref == 'refs/heads/main' || inputs.save_images) && ((steps.cases-list.outputs.data_mocha == 'true' && steps.data-mocha.outputs.cache-hit != 'true') || (steps.cases-list.outputs.data_archaic == 'true' && steps.data-archaic.outputs.cache-hit != 'true') || (steps.cases-list.outputs.data_hla == 'true' && steps.data-hla.outputs.cache-hit != 'true') || (steps.cases-list.outputs.data_pgs == 'true' && steps.data-pgs.outputs.cache-hit != 'true') || (steps.cases-list.outputs.data_catalogs == 'true' && steps.data-catalogs.outputs.cache-hit != 'true')) && 'true' || 'false' }}
HIT_MOCHA: ${{ steps.data-mocha.outputs.cache-hit || 'false' }}
HIT_ARCHAIC: ${{ steps.data-archaic.outputs.cache-hit || 'false' }}
HIT_HLA: ${{ steps.data-hla.outputs.cache-hit || 'false' }}
HIT_PGS: ${{ steps.data-pgs.outputs.cache-hit || 'false' }}
DATA_ANY: ${{ steps.cases-list.outputs.data_mocha || steps.cases-list.outputs.data_archaic || steps.cases-list.outputs.data_hla || steps.cases-list.outputs.data_pgs || 'false' }}
HIT_CATALOGS: ${{ steps.data-catalogs.outputs.cache-hit || 'false' }}
DATA_ANY: ${{ steps.cases-list.outputs.data_mocha || steps.cases-list.outputs.data_archaic || steps.cases-list.outputs.data_hla || steps.cases-list.outputs.data_pgs || steps.cases-list.outputs.data_catalogs || 'false' }}
run: |
if [ "$DATA_ANY" = true ]; then
echo "Data cache (${JOB}): exact key hit, MoChA panel ${HIT_MOCHA}, 1000 Genomes sites ${HIT_ARCHAIC}, IPD-IMGT/HLA and GENCODE ${HIT_HLA}, PGS scores ${HIT_PGS}" | tee -a "$GITHUB_STEP_SUMMARY"
echo "Data cache (${JOB}): exact key hit, MoChA panel ${HIT_MOCHA}, 1000 Genomes sites ${HIT_ARCHAIC}, IPD-IMGT/HLA and GENCODE ${HIT_HLA}, PGS scores ${HIT_PGS}, table builders ${HIT_CATALOGS}" | tee -a "$GITHUB_STEP_SUMMARY"
fi
scripts/ci/e2e-run.sh

Expand All @@ -802,6 +818,7 @@ jobs:
HIT_ARCHAIC: ${{ steps.data-archaic.outputs.cache-hit }}
HIT_HLA: ${{ steps.data-hla.outputs.cache-hit }}
HIT_PGS: ${{ steps.data-pgs.outputs.cache-hit }}
HIT_CATALOGS: ${{ steps.data-catalogs.outputs.cache-hit }}
run: |
d=$E2E_DATA_CACHE
if [ "$HIT_MOCHA" != true ] && [ -s "${d}/mocha/manifest.txt" ] \
Expand All @@ -812,7 +829,7 @@ jobs:
echo "archaic=true" >> "$GITHUB_OUTPUT"
fi
# Whole and checked (data_ok in e2e-run.sh), or not saved.
for n in hla pgs; do
for n in hla pgs catalogs; do
hit=HIT_${n^^}
if [ "${!hit}" != true ] && [ -d "${d}/${n}" ] && scripts/ci/e2e-run.sh --data-check "$n"; then
echo "${n}=true" >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -844,6 +861,12 @@ jobs:
path: ${{ env.E2E_DATA_CACHE }}/pgs
key: ${{ steps.data-keys.outputs.pgs }}

- uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
if: always() && steps.data-save.outputs.catalogs == 'true'
with:
path: ${{ env.E2E_DATA_CACHE }}/catalogs
key: ${{ steps.data-keys.outputs.catalogs }}

# The case leaves the panel there only once its sha256 matched.
- name: Data cache, HAPNEST panel, what to save
id: hapnest-save
Expand Down Expand Up @@ -936,9 +959,10 @@ jobs:
# Each group keeps its smallest images up to GROUP_BUDGET_MB of zstd
# output; the rest are pulled on every run. Four groups of 1500 MB are
# 5.9 GB, and while main replaces one group the old and the new entry
# both count: 7.3 GB. With the five data entries above (about 2.3 GB:
# MoChA 0.64, 1000 Genomes sites 1.36, HAPNEST 0.27, hla and GENCODE
# 0.03, PGS a few KB) that is 9.6 GB, under the 10 GB limit. An image pinned by digest
# both count: 7.3 GB. With the six data entries above (about 2.4 GB:
# MoChA 0.64, 1000 Genomes sites 1.36, HAPNEST 0.27, the table
# builders' downloads 0.08, hla and GENCODE 0.03, PGS a few KB) that is
# 9.7 GB, under the 10 GB limit. An image pinned by digest
# is never saved: docker load gives it back without its digest, so
# e2e-run.sh would pull it again anyway.
- name: Image sizes, and save images for the next run
Expand Down
Loading
Loading