Repository navigation
ci: the BuildKit cache in GitHub's registry, which the KVM fleet can read - #239
Merged
Merged
Conversation
…read compat compiled QEMU and the kernel cold on every run. runs-on points ACTIONS_CACHE_URL and ACTIONS_RESULTS_URL at its own cache, so `type=gha` on the fleet read a store nobody writes: six compat logs read, no cached QEMU layer, ~4390 ninja steps and ~2345 kernel CCs in each. A cold QEMU build reinstalls qemu/apk.lock from Alpine's live mirror, and once the mirror stopped serving what it pins compat failed on main four times running (from 2026-11-09), and both release attempts on 2026-11-12 failed at it. The Actions cache was also over its 10 GB (10.36 GB, 142 entries, 2026-11-12) and evicting least recently used. The caches are now cache:qemu, cache:kernel, cache:e2fsprogs and cache:image under ghcr.io/spin-stack/spin-machine, written by main's lanes and read by pull requests, compat and the release with a docker login. The ghaction-github-runtime step has nothing left to do and goes. The first push to main compiles cold once, to fill the registry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aledbf
force-pushed
the
ci/registry-cache
branch
from
November 12, 2026 05:44
8e8a2dc to
cc7ed5f
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.
Hypothesis
compat (KVM fleet) never reads the lanes' BuildKit cache, so it compiles QEMU and the kernel cold on every run, and a cold QEMU build breaks as soon as Alpine's mirror drops what
qemu/apk.lockpins. Moving the cache fromtype=ghatotype=registry(ghcr) gives every runner the same cache.Baseline (measured, 2026-10-24 → 2026-11-12)
CCs each.ACTIONS_CACHE_URLandACTIONS_RESULTS_URLpoint to runs-on's proxy (http://10.42.x.x:6871/).importing cache manifest from gha:… DONE 0.0sunable to select packagesinapk add(run 43153951135).Change
Taskfile.yml:CACHE_BACKEND=registry→ghcr.io/spin-stack/spin-machine/cache:{qemu,kernel,e2fsprogs,image}withmode=max,image-manifest=true,oci-mediatypes=true.localstays the developer default.docker loginto ghcr in place ofcrazy-max/ghaction-github-runtime. Main exports (CACHE_EXPORTas before); everything else only reads.CACHE_BACKEND=registry.packages: writein kernel and image, as qemu already had;packages: readin compat and release (the caller has to hold what compat asks for).Expected impact
apk addlayer is in the cache.Risks
CACHEDlines in the log.cachepackage is created private and linked to the repo by the first push.Validation
After merging, count
CACHEDlines and ninja steps in the logs of the next 5 compat runs on main. Then:Revert
git revert. The GHA cache will refill on its own.🤖 Generated with Claude Code