Skip to content

ci(release): share the dist build memory guard with Release Performance - #1403

Merged
kvlonge merged 4 commits into
mainfrom
ci/shared-linux-dist-memory
Nov 11, 2026
Merged

kvlonge merged 4 commits into
mainfrom
ci/shared-linux-dist-memory

Conversation

@kvlonge

@kvlonge kvlonge commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Why

Release Performance builds its candidate wheel with the dist cargo profile on a stock Linux runner. Two of the last three main runs lost that runner while compiling sqlbuild-cli ("The runner has received a shutdown signal"), so no comparison was produced: the 0.208.0 release merge (run 42887794956) and the #1400 merge (run 42897023724). That is the memory exhaustion the Linux dist wheel builds already guard against: their measured peak is up to about 20 GB.

Changes

  • New composite action .github/actions/dist-build-memory: start adds 16 GB of host swap, sets CARGO_BUILD_JOBS=3 for the rest of the job and samples used memory; report stops sampling and prints free -m, the swap counters and the peak RAM and swap use (also in the job summary).
  • build-distributions.yml uses it for Linux dist builds in place of its inline steps. The four --jobs 3 arguments go: maturin-action passes CARGO_* variables into its manylinux container, so the job limit is unchanged.
  • release-performance.yml uses it around the candidate wheel build, and runs on pull requests that change the action. Sampling stops before the timing comparison.

The dist profile, budgets, limits and other platforms are unchanged.

Verification

  • actionlint passes on both workflows; the release gate check passes.
  • Proof run: this pull request's Release Performance run 42894478126. The candidate build completed under the guard (cargo 22m47s against 14m48s with four jobs; job 64 min of its 90) and the comparison covered every command. Swap grew from 3071 to 19455 MiB; peak use was 15467 MiB RAM + 1504 MiB swap = 16339 MiB, above the 15983 MiB of RAM. It flags only the accepted no-cache compile CPU cost of the analysis cutover against 0.207.0 (1.202x and dense 1.154x), tracked separately.
  • Residual risk: publishing a tag cut before this change, without a prebuilt distributions run, would not find the new action; normal releases reuse prebuilt distributions and skip it.

Move the Linux dist build's swap, cargo job limit and memory report into a
composite action, and use it for the Release Performance candidate wheel,
which builds with the same dist profile and lost its runner the same way.
The job limit is now CARGO_BUILD_JOBS=3, which maturin-action passes into
its manylinux container, instead of a --jobs argument on each build.
@kvlonge kvlonge added the full-verify Run the full Verify matrix on this pull request label Nov 10, 2026
@kvlonge
kvlonge enabled auto-merge (squash) November 10, 2026 21:26
@kvlonge
kvlonge merged commit ed989e8 into main Nov 11, 2026
33 checks passed
@kvlonge
kvlonge deleted the ci/shared-linux-dist-memory branch November 11, 2026 00:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full-verify Run the full Verify matrix on this pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant