ci: isolate repository Docker caches from pull requests - #22
Conversation
Signed-off-by: Michael Feth <mfethe1@gmail.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…oping Trunk parameterised the push-gateway outputs: image by repository_owner; this branch scoped the buildcache by the lowercased full GITHUB_REPOSITORY. Keep both - trunk's outputs: line plus this branch's cache-from/cache-to.
…ling Docker Hub Docker Hub pulls of minio/minio and minio/mc are denied for all PR CI in this fork, and upstream stopped publishing free Docker Hub images on 2025-10-23. ghcr.io hosts no public minio mirror (verified: manifest 404), so CI now pulls the same upstream releases from quay.io, digest-pinned: - minio: quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z@sha256:9966a9... - mc: quay.io/minio/mc:RELEASE.2025-08-13T08-35-41Z@sha256:37d109... Tags match the pins already used by deploy/compose/compose.yml. Both docker-compose.yml (used by CI's 'docker compose up ... minio minio-init') and docker-compose.harness.yml are updated; deploy/ is untouched (internal registry deploys, not CI). Verified: digests resolve on quay.io, mc image pulls locally, both compose files pass 'docker-compose config'. Signed-off-by: Michael Feth <mfethe1@gmail.com>
minio image fix: Docker Hub → quay.io (digest-pinned)Problem: Docker Hub pulls of Investigation: Fix (commit
Tags intentionally match the pins already in Verification: both digests resolve on quay.io ( |
…uay experiment Trunk #47 (d425838) already replaced the removed minio Docker Hub / Quay images with digest-pinned chainguard builds plus an image-compatible healthcheck (chainguard ships no curl) and user/root compatibility notes. Resolve the compose conflicts in favor of trunk's vetted fix; keep this branch's docker-cache isolation. My quay.io pin of d425838^ is thereby superseded. Signed-off-by: Michael Feth <mfethe1@gmail.com>
|
Follow-up: merged |
TLS 1.3 handshake messages were accepted across encryption level boundaries; patched in >= 0.23.45. Lockfile-only bump (rustls, rustls-webpki 0.103.15, aws-lc-rs 1.18.1, aws-lc-sys 0.45.0). Signed-off-by: Michael Feth <mfethe1@gmail.com>
|
Fixed the Fix: bumped the lockfile to rustls 0.23.45 (the advisory's patched version, released on crates.io today) via Lockfile-only change (10 insertions, 9 deletions; |
Summary
Same-repository PR builds in
mfethe1/buzzattempted to export BuildKit caches intoghcr.io/block/*even though image publication was disabled. Three inspected jobs in Docker run 34140327403 compiled their release binaries, then failed during registry cache export withpermission_denied.Resolve relay and public push gateway cache names from the lowercase current repository, independently of
GHCR_IMAGE. Skip registry login and cache export on every PR. Cache export requires a protected ref and apushorworkflow_dispatchevent. PR image builds still run, and build failures remain failures.Add a production-workflow contract test to the CI changes job and local checks. It executes the actual cache-resolution shell and evaluates the actual workflow expressions with GitHub's expression library.
Related issue
No duplicate cache-fix PR or issue found. The failure was observed on PR #18; its Docker workflow and Dockerfiles were unchanged from its base.
Testing
Evidence is bound to base
adeec6eb5c4ff425aa03d8a744a295da4429f67fand headcac8ad256548125471bf103efea687b2d813952b.just docker-cache-check: 6 tests passed, covering 60 event/protection/head-repository cases plus cache ownership for three repository names and both architectures.just ciafter the documented dependency setup: exit 1 at the final mobile test stage, with 2,241 passed and eight baseline golden failures. Desktop JavaScript tests passed 6,583/6,583 and the preceding recipe stages completed. All eight rendered mobile PNGs are byte-identical to the saved exact-base Airy outputs; expected images are unchanged.517c2d03684307a5c288c5cfd334cb4ea00a3867, whose parents are the exact base and head above. All four registry logins and all publication jobs were skipped. Actual build commands usedmfethe1cache refs, no cache-export argument, andpush=false.Limits
This remains a draft because full CI is red and required merge gates are incomplete. The existing image qualification and publication paths are unchanged. Fork image publication still needs separate qualification: the relay defaults to
ghcr.io/block/buzzunlessGHCR_IMAGEis configured, and the gateway publication destination remainsghcr.io/block/buzz-push-gateway.Existing build-job token permissions are also unchanged. This patch limits registry login and cache export; it does not claim to remove all ambient package or OIDC permissions. No images have been published or deployed as part of this fix.