ci: restore the cache key and the package list that did not reach master - #583
Merged
Conversation
PathGao
force-pushed
the
ci/restore-cache-key-and-package-list
branch
from
August 11, 2026 12:49
fb136ad to
fdc4834
Compare
Moving the Ubuntu would otherwise have restored the wrong cache silently.
rust-cache's key ends in `runner.os`, which is `Linux` for both 22.04 and
24.04. Read off two runs of the same job, one per Ubuntu, it is identical:
v0-rust-linux-build-test-Linux-x64-e8b3ee54-a2c94f3a
^^^^^ the image is not in here
So master's next run on 24.04 would have restored a target/ built on 22.04 as a
full match. Cargo fingerprints do not track system libraries: webkit2gtk-sys's
build script probes the distribution's headers and caches the result, and that
result would have been reused against a different distribution's, with nothing
to notice.
`$ImageOS` is what the runner calls its own image -- ubuntu22, ubuntu24,
macos15. Keying on it invalidates on this move and on the next one, including
the ones `macos-latest` and `windows-latest` make with no commit at all. Read
from the runner rather than written down, so it is not a fourth thing to
remember.
The previous keys become unreachable and expire on the usual seven-day-unused
or least-recently-used path. One extra set of ~4.45 GB until they do, against
the 10 GB limit that no longer holds the npm caches.
Checked by mutation: dropping IMAGE_OS from the key fails the new assertion and
nothing else. The first attempt at that check reported a pass because bash ate
the `${{ }}` before python saw it and the file was never mutated -- the same
shape as `continue-on-error`, a check that cannot fail looking exactly like a
check that passed. Redone with the edit asserted before the run. 976 pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…eds (#581) Stacked on ci/one-linux-runner. build.yml asked apt for sixteen packages; test_build.yml asks for six and compiles the same tree and bundles the same three formats. Nothing said which was right, because build.yml only runs on workflow_dispatch -- its apt list is the one part of the Linux build no pull request has ever exercised. Six of the ten extras apt installs regardless: libwebkit2gtk-4.1-dev depends on libwebkit2gtk-4.1-0, libjavascriptcoregtk-4.1-dev, gir1.2-webkit2-4.1 and libgtk-3-dev, and those pull libjavascriptcoregtk-4.1-0 and gir1.2-javascriptcoregtk-4.1 behind them. The other four are libxcb1-dev, libxcb-render0-dev, libxcb-shape0-dev and libxcb-xfixes0-dev, plus xdg-utils -- none of which appear in Tauri v2's Debian/Ubuntu prerequisites. The evidence is not that reasoning. Run 31487547674 built the .deb, the .rpm and the AppImage on ubuntu-24.04 -- the release's own runner, after the change below this one -- with these six and nothing else, and uploaded 101 MB of bundles. Making the lists identical is the point rather than making one shorter. Both workflows compile and bundle, so any difference between them is a release depending on something nothing tested. An assertion holds them together, and holds test.yml to the same list minus the bundlers, since it compiles but never bundles. Checked by mutation in both directions: adding a package to build.yml fails it, and removing one from test.yml fails it. 977 pass. Co-authored-by: PathGao <gaoyanbo@gaoyanbodeMacBook-Air.local> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
PathGao
force-pushed
the
ci/restore-cache-key-and-package-list
branch
from
August 11, 2026 13:08
fdc4834 to
bd9992b
Compare
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.
Recovery, not new work. Two commits that were reviewed and green on #580 and #581 are not on
master.What happened
origin/ci/one-linux-runnerstill holds both. It cannot simply be merged forward: it was branched before #579, so merging it would takesnapcraft.yaml,publish-packages.ymlandtest_snap.ymlback to building the snap from source. This is the two commits cherry-picked onto currentmasterinstead.What master is missing
The cargo cache key (
test.yml,test_build.yml). rust-cache keys onrunner.os, which isLinuxfor both 22.04 and 24.04 — measured, the key is identical on both:#580 moved the runner. Without this commit, master's next
test_buildrun on 24.04 restores atarget/built on 22.04 as a full match, and cargo fingerprints do not track system libraries — webkit2gtk-sys's build script probed jammy's headers and that result gets reused against noble's.This is live on master right now, and it is the half of #580 that made moving the runner safe.
The Linux package list (
build.yml). Master still installs sixteen packages wheretest_build.ymlinstalls six and builds the same three bundles. Six of the extras apt installs anyway as dependencies oflibwebkit2gtk-4.1-dev; the fourlibxcb *-devandxdg-utilsare in no Tauri v2 prerequisite list. Run 31487547674 built the.deb, the.rpmand the AppImage onubuntu-24.04with six.Both assertions come with them, so the two facts stay held: the cache key must name the runner image, and the release's package list must equal the one a pull request exercises.
Verification
Cherry-picked clean onto
master; no conflicts. Content confirmed after the pick —IMAGE_OSpresent in both workflows,build.ymldown to six packages.npm test— 977 pass.The full mutation checks are on the original pull requests; nothing about the assertions changed here.
Note on the branches
origin/ci/one-linux-runnerandorigin/ci/one-linux-dependency-listcan be deleted once this lands — everything on them is either already on master or in this pull request.🤖 Generated with Claude Code