Fold the code-coverage job into the test matrix: 7 CI jobs per PR to 5 - #310
Merged
1-Bart-1 merged 5 commits intoSep 12, 2026
Merged
Conversation
Coverage now rides on the ubuntu 1.12 entry of `test` rather than a second job running the same suite instrumented on both Julia versions, and the macOS-latest/aarch64 entry is only present when the event is not a pull request. Both `test` entries move from actions/cache@v6 (artifacts only, keyed on Project.toml) to julia-actions/cache@v2. Non-draft pull requests go from 7 jobs to 4; push to main and tags keep the full matrix. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ckETMPNKF5pHg5vYSx7XZ
Contributor
Author
|
Local full suite: PASS (6 min, Julia 1.12.7, one cell of the matrix) |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Member
|
Keep macos. Doesn't the fold cause the benchmark tests to fail? |
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KVS7sbyoYtHatTcB9btGTh
1-Bart-1
approved these changes
Sep 12, 2026
1-Bart-1
deleted the
agent/309-trim-the-ci-matrix-from-7-jobs-per-pr-to
branch
September 12, 2026 11:11
This was referenced Sep 12, 2026
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.
TL;DR
test-with-code-coverageran the same suite as the two ubuntutestentries, only instrumented, so every non-draft pull request built and ran the full suite on ubuntu four times. Coverage now rides on the ubuntu 1.12 entry oftestand the second job is gone: 7 jobs per non-draft pull request become 5, with the matrix unchanged — ubuntu 1.11, ubuntu 1.12 with coverage, windows 1.12, macOS-latest/aarch64 1.12, plusDocumentation.What the second job was actually adding
BUILD_IS_PRODUCTION_BUILDis read in one place,test/runtests.jl:27-34, wherefalseskipstest/bench.jland nothing else. Sotest-with-code-coveragediffered from the ubuntu entries oftestby three things:--code-coverage, not runningbench.jl, and caching withjulia-actions/cache@v2rather thanactions/cache@v6— which cached only~/.julia/artifacts, keyed onProject.toml. Coverage is now a matrix flag on the ubuntu 1.12 entry,julia-processcoverageandcodecovare guarded byif: matrix.coverage, every entry caches withjulia-actions/cache@v2, and the job carries the 50-minute cap #289 gave the coverage job rather than the 40testhad.Folding it in also puts coverage behind the
github.event.pull_request.draft == falseguard that onlytestcarried, so a draft pull request drops from 3 jobs to 1.Does the fold break bench.jl? — asked on the thread
No, and it is a fair thing to have asked: I assumed the same on the first read. The old job set
BUILD_IS_PRODUCTION_BUILD: false, andbench.jlasserts hard allocation ceilings (result.allocs ≤ 50,≤ 10,≤ 700, …) that instrumentation looks certain to blow, so I was going to carry that skip across. It does not blow them. Runningtest/bench.jlunder--code-coverage=userand under--code-coverage=noneback to back gives 21/21 passing both ways and identical allocation counts at every assertion — 23, 7, 6, 330, 69, 92, 4, 132, 0 — in 26.0 s against 29.5 s. Coverage counters are not heap allocations, so the numbers those tests assert on do not move.The folded entry therefore runs
bench.jlexactly like the other ubuntu entries —BUILD_IS_PRODUCTION_BUILDbecomes the constanttruerather than a matrix axis with one value in it — and that entry is green in CI withbench.jlin it, not just on this box.macOS stays
#309 asked for 4 jobs on a pull request, by giving the macOS-aarch64 entry a conditional
includethat left it out on pull requests and kept it on push-to-main and tags. Asked on the thread to keep macOS, I took that out: theincludeis a plain three-entry list again, every event runs the same matrix, and a pull request gets 5 jobs rather than 4. The gain is the ubuntu duplication, which was the larger half of it — a pull request now builds and runs the suite on ubuntu twice rather than four times.Flagged, not fixed: the declared minimum Julia is never tested
Project.tomldeclaresjulia = "1.10, 1.11"while CI tests 1.11 and 1.12, so 1.10 — the declared minimum — is untested, before this change and after it. It reads as stale rather than deliberate: onlyManifest-v1.11.toml.defaultandManifest-v1.12.toml.defaultare tracked, andbin/install:140-141resolvesManifest-v${major}.toml.default, so./bin/installon 1.10 has no manifest to instantiate from at all. The bound is redundant as written too, since^1.10already covers 1.11. My recommendation is to bump[compat] juliato"1.11"in a pull request of its own — say the word and I will open it. If 1.10 really is supported, then a 1.10 entry and its tracked manifest are what belong here instead, and that is the more expensive answer.fail-fast: falseis still on the job. That is #279, left alone so this diff holds one idea.Verification
5000fb8c— exactly 5 jobs, ubuntu 1.11 (29 min), ubuntu 1.12 with coverage (21 min, inside the 50-minute cap), windows 1.12 (22 min), macOS aarch64 (17 min),Documentation(11 min).julia-processcoverageandcodecov-actionreportsuccesson the ubuntu 1.12 job andskippedon the other three, so theif: matrix.coverageguard picks out the one entry; and thecoverage: trueinclude entry merges into the existing ubuntu/1.12 combination rather than adding a second ubuntu 1.12 job, which was the one thing here I could not settle by reading.test/bench.jl: 21/21 under--code-coverage=userand under--code-coverage=none, identical allocation counts (juliaserver, both exit 0)mainat 50b1454;mainhas since released v5.1.0 (0f958d0), which this branch neither needs nor conflicts with.Test end-user and developer setupwent red on an earlier head of this branch and is green now. It was never this diff: it is the separatesetup-test.ymlworkflow, which CI.yml does not touch, failing inexamples/ram_air_kite.jlwithargminover an empty contour atsrc/airfoil_aero/kulfan.jl:71— the same exception onrelease/v5.1.0andfix/panel-normal-quarter-chord, branches that do not carry this commit. Setup Test is failing #312 fixed it onmainand that fix is merged in here.coverage: ${{ matrix.coverage || false }}readsmatrix.coverageon entries that never define it; GitHub resolves the undefined property to an empty string, so the||falls through tofalse— that is what the three non-coverage jobs in the run above did, but it is the line I would check first if coverage ever showed up where it should not.Scope
+16 / -54, all of it
.github/workflows/CI.yml.Closes #309 · task
VortexStepMethod.jl-309