From 5d80e83a37411ec00e9b88154de04ded5616ee2c Mon Sep 17 00:00:00 2001 From: amkram Date: Mon, 13 Jul 2026 13:24:30 -0700 Subject: [PATCH 1/2] ci: docker push-only + drop committed libhts artifact Follow-ups to #113 (merged before these landed): - docker: restrict to push-to-main. Its GHA layer cache (mode=max) is large, so running it on every PR evicted the build-test/bioconda ccaches from the shared 10GB pool (LRU) and those then cold-rebuilt from scratch (build 6s -> 230s). The job only validates the from-source USE_SYSTEM_LIBS=OFF path, which build-test + bioconda already cover on PRs; run it on merges to main. - remove src/3rdparty/samtools/htslib-1.20/libhts.so.3 -- a build artifact that slipped into #113 (a versioned .so not matched by the *.so gitignore rule). - gitignore *.so.* so versioned shared libraries stay out. --- .github/workflows/ci.yml | 6 ++++-- .gitignore | 1 + src/3rdparty/samtools/htslib-1.20/libhts.so.3 | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) delete mode 120000 src/3rdparty/samtools/htslib-1.20/libhts.so.3 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3fbdc858..447403a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -123,8 +123,10 @@ jobs: # from-source deps and unchanged objects come from cache; only changed .cpp rebuild. docker: name: docker build - # TODO(ci/speedup): restrict to `if: github.event_name == 'push'` once the cache - # is proven; kept on PRs now so the cache-warming can be validated on this branch. + # Push-to-main only. Its GHA layer cache (mode=max) is large, so running it on PRs + # evicted the build-test/bioconda ccaches from the shared 10GB pool (LRU) and those + # then cold-rebuilt from scratch (build 6s -> 230s). build-test + bioconda cover PRs. + if: github.event_name == 'push' runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index e8a8302b..04f909de 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ _deps/ # Libraries *.so +*.so.* *.dylib *.dll *.lai diff --git a/src/3rdparty/samtools/htslib-1.20/libhts.so.3 b/src/3rdparty/samtools/htslib-1.20/libhts.so.3 deleted file mode 120000 index a2a920b4..00000000 --- a/src/3rdparty/samtools/htslib-1.20/libhts.so.3 +++ /dev/null @@ -1 +0,0 @@ -libhts.so \ No newline at end of file From fa955842318bee38a164c66729543965bec72e97 Mon Sep 17 00:00:00 2001 From: Alex Kramer Date: Mon, 13 Jul 2026 13:29:10 -0700 Subject: [PATCH 2/2] Clean up comments in CI workflow --- .github/workflows/ci.yml | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 447403a8..051244fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,17 +16,10 @@ concurrency: permissions: contents: read -# ccache: hash the compiler's *content*, not its mtime (the default). The conda -# toolchain is re-extracted whenever the env cache misses or environment.yml changes, -# giving identical compilers fresh mtimes -- which otherwise invalidates the entire -# ccache and drops build-test from ~100% to ~0% hits. env: CCACHE_COMPILERCHECK: content jobs: - # Primary gate (every PR + push): build against conda libs — the bioconda - # distribution path — and run the full unit + end-to-end suite. Fast because - # conda ships prebuilt binary deps (no from-source capnp/htslib/protobuf). build-test: name: build & test (linux) runs-on: ubuntu-22.04 @@ -50,10 +43,6 @@ jobs: - name: Test run: ctest --test-dir build --output-on-failure -j"$(getconf _NPROCESSORS_ONLN)" - # Guards the bioconda recipe's exact build path: the repo's own CMakeLists driven - # with USE_SYSTEM_LIBS + an offline PANMAN_SOURCE_DIR (the recipe supplies panman as - # a tarball, not via FetchContent). Keeps a CMakeLists change from silently breaking - # the conda package while the primary gate (which FetchContents panman) stays green. bioconda-build: name: bioconda recipe build (linux) runs-on: ubuntu-22.04 @@ -87,7 +76,6 @@ jobs: - name: Smoke test run: ./build-bioconda/bin/panmap --version - # Cross-platform safety net. macOS runners bill ~10x, so only on push to main. build-test-macos: name: build & test (macos) if: github.event_name == 'push' @@ -106,26 +94,15 @@ jobs: key: ${{ runner.os }}-ccache max-size: 500M - name: Configure - # macOS runners are arm64 (Apple Silicon); OPTION_PORTABLE's -march=x86-64-v3 - # is x86-only. Homogeneous arm64 runners have no cross-CPU ccache-SIGILL issue, - # so keep -march=native (OPTION_PORTABLE off) here. Portability matters only for - # the heterogeneous x86 Linux runners. run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DOPTION_BUILD_TESTS=ON - name: Build run: cmake --build build -j"$(sysctl -n hw.ncpu)" - name: Test run: ctest --test-dir build --output-on-failure -j"$(getconf _NPROCESSORS_ONLN)" - # Validates the vendored from-source build path (USE_SYSTEM_LIBS=OFF) and the - # shipped image -- the only job exercising that path. Push-to-main only, so it - # never gates PRs (build-test + bioconda cover those). ccache on a BuildKit cache - # mount (persisted by buildkit-cache-dance) + GHA layer cache keep it fast: the - # from-source deps and unchanged objects come from cache; only changed .cpp rebuild. docker: name: docker build - # Push-to-main only. Its GHA layer cache (mode=max) is large, so running it on PRs - # evicted the build-test/bioconda ccaches from the shared 10GB pool (LRU) and those - # then cold-rebuilt from scratch (build 6s -> 230s). build-test + bioconda cover PRs. + # Push-to-main only. if: github.event_name == 'push' runs-on: ubuntu-22.04 steps: