ci(devcontainer): immutable :sha tag + prune stale build intermediates#93
Conversation
Tag the multi-arch manifest with an immutable :sha-<commit> alongside :latest so prebuilds can be pinned / rolled back. Add a best-effort prune of the per-arch build-<run_id>-* intermediates that devcontainers/ci must push (it can't push digest-only). The prune is digest-aware: it never deletes a version whose digest is referenced by the just-published :latest manifest list, and never touches versions tagged latest or sha-*, so it cannot corrupt :latest. It is also continue-on-error so a cleanup failure never blocks a published image. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 1 hour, 3 minutes, and 22 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Independent pipeline improvement (does not touch the build config, so it's orthogonal to the arm64 fix in #92).
What
:sha-<commit>tag on the multi-arch manifest, alongside:latest— lets you pin a known-good prebuild or roll back.build-<run_id>-*intermediates thatdevcontainers/ciis forced to push (it can't push digest-only), so they stop accumulating in GHCR.Safety
The current run's
build-*intermediates share image digests with the children of the:latestmanifest list — deleting those versions would corrupt:latest. The prune guards against this::latestand never deletes a version with one of those digests.latestorsha-*.build-*-tagged versions.continue-on-error: true— a cleanup/permission failure can never block a published image.Net effect: current run's intermediates are preserved (they back
:latest); stale intermediates from prior runs whose content changed get cleaned up.Note
Both behaviors only exercise once the
mergejob runs, which needs both arch builds green — i.e. after #92 lands. The prune is intentionally conservative + non-fatal; if the GHCR delete perms differ from expectation it'll just log and move on, and we can tune in a follow-up without risk to:latest.🤖 Generated with Claude Code