ci: cut wasted minutes from measurement_id and WASM jobs#8776
Open
a10y wants to merge 1 commit into
Open
Conversation
Two PR-lane jobs spend nearly all their time on avoidable setup work: - measurement_id golden vectors: setup-uv defaults to a full `uv sync --all-extras --dev`, which builds the vortex-data Rust extension via maturin on an uncached ubuntu-latest runner (~6 min). The test itself takes ~1s and runs with `uv run --no-project`, so pass `sync: false` (same as the python-cuda-test job). - WASM integration smoke test: the only Rust-compiling job still on plain ubuntu-latest with no compiler cache; ~4.5 of its ~5 min is a cold cargo build. Move it to the prebuilt runs-on image with S3 sccache like its sibling jobs. Also add an `sccache --show-stats` step to the Windows test job (the PR critical path at ~7.5 min, ~5 min of it compile) so cache hit rates are visible in logs — today there is no way to tell from a run whether the S3 cache is effective on Windows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Andrew Duffy <andrew@a10y.dev>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three targeted fixes from profiling recent CI runs (job/step timings + logs from PR runs of
Linters and Tests):measurement_id golden vectors: 6.2 min → ~20 s. Thesetup-uvaction defaults touv sync --all-extras --dev, which builds the vortex-data PyO3 extension via maturin on an uncachedubuntu-latestrunner — ~6 min of the job (verified in job logs:Run uv sync --all-extras --dev→Building vortex-data). The test itself takes ~1 s and usesuv run --no-project, so it needs no workspace packages. Passsync: false, matching the existingpython-cuda-testjob.ubuntu-latestwith no compiler cache; ~4.5 min is a coldcargo build. Moved to the prebuilt runs-on image with S3 sccache, following the same pattern as the other build jobs (fork fallback toubuntu-latestpreserved;rustup target add wasm32-wasip1mirrors what the wasm32 build job does).Rust tests (windows-x64)is the ci.yml PR critical path (consistently 6.8–7.7 min across the last 8 PR runs, ~5 min of it compile). The sccache server demonstrably starts, but logs give no way to see hit rates. Added ansccache --show-statsstep (if: always(), main repo only) so cache effectiveness on Windows is visible per run.Not included (infra-side observations from the same investigation)
amd64-mediumrunners while concurrent ci.yml jobs get runners in <1 min. One PR push requests ~26 runs-on VMs at once; this looks like a concurrent-instance/pool cap in.github-private(this repo'sruns-on.ymlonly defines images). Raising capacity there, or consolidating the 8 Codspeed shards to 4, would cut the largest remaining chunk of PR wall clock.m8i-flex.2xlarge(8 vCPU); a size bump would directly shrink the PR critical path since compile dominates and linking 53 test binaries is uncacheable.Checks
yamllint --strict -c .yamllint.yaml .github/workflows/ci.yml— passes.🤖 Generated with Claude Code