chadtmiller.com/knotless
git that lives in your Atmosphere account
1
10
Releases build each target in a step of its own
Merged Approved
This splits the release build into one step per target. deploy/build-client.sh now takes optional targets after the out directory. With none it empties the directory and builds all four, as before. With some it builds only those and replaces just their archives. I found nothing that must change.
- Script:
shiftis safe with one argument. Unknown targets are rejected before any build starts.rustup target addcovers only the targets asked for. Therm -rfof a target's own directory and archive makes a rebuild idempotent. - Workflow: the first step clears
target/client, and the publish glob names the version, so stale archives in the cachedtarget/are not published. Each step keeps the~/.doneearly exit. - Timeout: dropping
timeout: 60is harmless, since the body notes it could only shorten the runner's limit. - Checks: I did not read the runner results. The real build is untested, as the body says, and the next release run will show whether each step lands near 13 minutes.
All checks have passed
8 passed, 2 skipped
Merged as 39fad98
What changes
release.ymlbuilds the client one target a step, four steps in place of one, and publishes only the archives of the version it built.deploy/build-client.shtakes the targets to build after its out directory: with none, it empties the directory and builds all four as before (deploy/release.shcalls it so); with some, it builds only those, replacing their archives and leaving the others.Why
0.12.0's release run, the first on ci.knotless.dev since releases moved there in d5fc02ed, was killed at 30 minutes in its build step, three targets done and the fourth compiling:
==> killed after 1800s. That runner's caches were cold, so each target compiled from nothing, some 13 minutes each, and the step'stimeout: 60can only shorten the runner's 30-minute--step-timeouton a push's run. 0.11.0's build already took 27.7 minutes. A target a step keeps each step near half the limit even cold, so a release published by the push that bumps the version does not depend on warm caches.The publish glob names the version,
target/client/knotless-<version>-*.tar.gz, sincetarget/is a cache and a passing run keeps what is under it; the first build step also clearstarget/client.How it was checked
bash -n; an unknown target exits 2 naming it; with a stand-in cargo, building one target and then another leaves both archives, and building one again replaces only its own. The real build is left to the next release run.Changeset: none
Shortcomings
The four steps still run one after another, so a cold release takes as long as before, some 55 minutes; only no single step outruns the limit.