Commit 03ba406
ci: stop the Actions cache quota from killing every main Docker build (#981)
Every push to main since 2026-07-24 failed the Docker workflow with
`failed to solve: not_found`, always at `#40 exporting to GitHub Actions
Cache`. PRs passed because they set `cache-to: ''` and only read.
Root cause is the shared 10GB Actions cache quota, not the Dockerfile.
rust.yml used a plain `actions/cache`, and Actions caches are scoped
per-ref, so every PR wrote its own ~1.2GB copy of the same key. Six
copies held 7.22GB of the 10GB budget; the repo sat pinned at 10.44GB.
That left under 3GB for buildkit, so a mode=max export of the
cargo-chef build evicted its own already-uploaded blobs and 404'd
finalizing the manifest. The recoverable `#28 CACHED` ->
`#28 ERROR: not_found` earlier in the same logs is the same eviction
hitting the import side.
#977's serialization addressed docker-vs-docker contention, but the
competitor was rust.yml — run 30175930394 was alone in flight and still
failed. The concurrency block stays; it's still worth not running three
90-minute builds at once.
- rust.yml: split cache into restore/save, save only on main pushes.
PRs stay warm via restore-keys against main's copy. Frees ~6GB.
- docker-publish.yml: move the buildkit cache to a GHCR registry cache,
which is outside the Actions quota, so the two workflows stop
competing for it at all. Login is ungated so PRs can read it.
- docker-publish.yml: drop setup-qemu-action. We build linux/amd64 on
an amd64 runner, so it did nothing but park a 32MB binfmt cache per
ref (13 of them, 419MB).
Also pruned the five merged-PR cargo caches and the stale binfmt
entries out of band: the repo is now at 4.0GB across 18 entries.
Diff is YAML-only, so clippy can't be affected; `cargo fmt --all --
--check` passes.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>1 parent 630a9e3 commit 03ba406
2 files changed
Lines changed: 37 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
56 | | - | |
| 55 | + | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
61 | 63 | | |
62 | | - | |
63 | 64 | | |
64 | 65 | | |
65 | 66 | | |
| |||
81 | 82 | | |
82 | 83 | | |
83 | 84 | | |
84 | | - | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
85 | 92 | | |
86 | 93 | | |
87 | | - | |
| 94 | + | |
88 | 95 | | |
89 | 96 | | |
90 | 97 | | |
| |||
128 | 135 | | |
129 | 136 | | |
130 | 137 | | |
131 | | - | |
| 138 | + | |
132 | 139 | | |
133 | 140 | | |
134 | 141 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
43 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
44 | 51 | | |
45 | 52 | | |
46 | 53 | | |
| |||
79 | 86 | | |
80 | 87 | | |
81 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
82 | 104 | | |
83 | 105 | | |
84 | 106 | | |
| |||
0 commit comments