Repository navigation
ci: reuse the merge-queue verdict on main and trim coverage/sbt work - #1355
Mikola Lysenko (mikolalysenko) wants to merge 11 commits into
Conversation
Reuse successful same-SHA merge-group verdicts on main while retaining cache writers and the full tier. Keep Gradle PR coverage on the supported boundary lines, balance expensive hosted cases, and group short e2e jobs without losing filters or tool-version guards. Balance Windows tests from measured durations, retain line-table backtraces, avoid duplicate workspace builds and coverage reports, and trim the blocking sbt warm set.
Retain the new Bun shared bundled-record test in the grouped e2e matrix. Run the new Rust setup retry script under Bash in the Windows addon job.
|
[final reviewer] Auto-merge is off. Tanmay Singla (@Tanmay182003), two non-merge commits landed after your approval at
The PR is also CONFLICTING with main right now. Please take another look at those two commits once the conflict is fixed; I'll re-arm auto-merge after a fresh approval on a green head. Generated by Claude Code |
Applies #1362's runs-on mapping to this branch's ci.yml and compatibility workflows: Linux jobs map to depot-ubuntu-24.04-4 / depot-ubuntu-22.04-4 unless the repository variable DISABLE_DEPOT_RUNNERS=true. The two PRs touch the same workflow files, so carrying the mapping here lets them land back to back without a conflict eviction. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Main now runs PR, merge_group and push CI in the lean scope (#1375) on Depot runners (#1362), and already carries this PR's Gradle Windows change. Every conflicted workflow and test file takes main's version. Only the pieces that still save minutes on that structure are re-applied. Kept: - Merge-queue verdict reuse on push to main. clippy runs scripts/ci-reuse-merge-group.py (actions: read), which looks for a successful merge_group run of ci.yml for the identical SHA from a gh-readonly-queue/main/ branch of this repository. When it finds one, the push run still compiles to refresh the main-only caches (cargo test --no-run in test, coverage under the llvm-cov env and cargo-old-toolchains; the e2e builders and node-addon build as before) but skips test steps and the test-only jobs the queue already ran: e2e, e2e-extended, e2e-windows, e2e-macos, the cargo-vex and yarn lean jobs and docker-base. Jobs the queue never runs (test-release, e2e-full, yarn-berry-full, cargo-vex-matrix-full) keep running, so the Linux e2e bundle still uploads. API errors, timeouts, bad payloads, missing evidence and direct pushes all fall back to the full run. hosted-e2e is left running on every push, as main's LEAN SCOPE note requires. - Coverage summary from the existing LCOV export (scripts/ci-lcov-summary.py) instead of a second `cargo llvm-cov report --summary-only` pass over the instrumented objects. coverage is the critical-path job. - Runtime-balanced Windows test shards (scripts/ci-test-shard.py with scripts/ci-test-durations.json) and the slimmer sbt warm-up for coverage-docker's blocking slice (Dockerfile.sbt SBT_WARM_TOOLS). Both only affect full-scope runs now. Dropped: - e2e row packing (ci-e2e-groups.py, ci-e2e-run.py, grouped e2e jobs, e2e-gradle-mid) and their tests: main split e2e into lean `e2e` and full-only `e2e-extended` instead. - The Gradle compat changes (already on main via #1375). - The ci-ok `!cancelled()` condition and the node-addon OS matrix: they don't apply cleanly to main's design and aren't needed for the savings above. - The per-workflow Depot runs-on edits, which main landed in #1362. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Tanmay Singla (@Tanmay182003) Wenxin Jiang (@Wenxin-Jiang) heads-up: the scope of this PR changed after your approval. I merged main (lean CI #1375 and Depot runners #1362) and dropped the e2e row packing, the Gradle changes and the ci-ok cancellation tweak. What's left is reusing the merge-queue verdict on push to main, the LCOV-based coverage summary, Windows shard balancing and the sbt warm-up slimming (details in the updated description). Could you take another look? |
Reworked on top of main's lean CI (#1375) and Depot runners (#1362). Main now runs PR, merge_group and push CI in a lean scope, and it already includes this PR's Gradle Windows change. This PR now carries only the pieces that still save CI minutes on that structure. The required checks
ci-okandclippykeep their names, andci-okstillneedsevery job.Kept
clippyrunsscripts/ci-reuse-merge-group.pywithactions: read. The script makes one bounded API read (15 s timeout) for a successfulmerge_grouprun ofci.ymlon the identical SHA, from agh-readonly-queue/main/branch of this repository. If it finds one:save-if: github.ref == 'refs/heads/main') stay warm:cargo test --no-runintest,coverage(under the llvm-cov env) andcargo-old-toolchains. The e2e builders and the node-addon build run as before.e2e,e2e-extended,e2e-windows,e2e-macos,cargo-vex-matrix{,-windows,-macos},yarn-classic-matrix,yarn-berry-e2e{,-macos}anddocker-base/coverage-docker.test-release,e2e-full,yarn-berry-fullandcargo-vex-matrix-full. The Linux e2e bundle is still uploaded for them.hosted-e2estill runs on every push, as main's LEAN SCOPE note requires.scripts/ci-lcov-summary.py). It replaces the secondcargo llvm-cov report --summary-onlypass, which merged the profiles and scanned the instrumented objects again, on the critical-pathcoveragejob. The summary reports line, function and branch totals (LCOV has no LLVM region totals).scripts/ci-test-shard.py+scripts/ci-test-durations.json) and a slimmer sbt warm-up forcoverage-docker's blocking slice (Dockerfile.sbtSBT_WARM_TOOLS, with sbt 1.2.8/1.13.0 only). Both apply only in full scope now. Nightly and the compatibility workflows keep the full sbt, Mill and scala-cli warm-ups.Dropped
ci-e2e-groups.py,ci-e2e-run.py, grouped jobs,e2e-gradle-mid) and its tests. Main chose the leane2e/ full-onlye2e-extendedsplit instead.ci-ok!cancelled()condition and the node-addon OS matrix. They don't fit main's design and aren't needed for the savings above.runs-onedits. These landed in Run Linux CI jobs on Depot runners #1362.Validation
python3 -B -m unittest discover -s scripts/tests: 316 tests OK (1 existing skip). This includes new contract tests for the reuse wiring, the reuse script, the LCOV summary and the timed shards.actionlint .github/workflows/ci.yml: the same 165 findings as main (all the existingexpression"not defined in object type" warnings), with no new kinds or messages.ci-okneeds all 30 other jobs. Everyneeds.X.outputs.reusereference resolves to a directneedsthat exportsreuse.Fixes #1170
Fixes #1174
Fixes #1225
Refs #1182
🤖 Generated with Claude Code