Repository navigation
fix(release): pull the infra images' base images from mirror.gcr.io in CI - #275
Merged
Merged
Conversation
public.ecr.aws rate-limits anonymous pulls per source IP, and the release's image builds fail on 429s that retries within a job don't outlast. mirror.gcr.io serves the same Docker official images under the same digests, as local-backends.yml already relies on. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…keeping the Dockerfiles on public.ecr.aws mirror.gcr.io keeps an image only while it's asked for, and a Dockerfile that names it directly has nothing to fall back to when it doesn't, so the Dockerfiles, which ship in the wheel, stay on public.ecr.aws. Instead the infra-build job pulls its image's bases from the mirror under the names its Dockerfile uses before building, the way local-backends.yml does; a base the mirror doesn't give is left to the build to pull from public.ecr.aws. local-backends.yml's two inline steps move into the shared script. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
The manual publish runs on main keep failing on base-image pulls from
public.ecr.aws. On the last run, 7 of the 8 build jobs passed, and the gateway amd64 job got429 Too Many Requeststhrough every retry. ECR Public rate-limits anonymous pulls per source IP, and some hosted-runner IPs stay throttled longer than retries inside one job can wait.Change
.github/scripts/mirror_base_images.py "$DOCKERFILE"before the build. It pulls eachpublic.ecr.aws/docker/library/…base frommirror.gcr.ioand names it the way the Dockerfile does. The build doesn't pass--pull, so it uses that local copy.public.ecr.awswith the existing 429 retries, so failing needs both registries to fail.public.ecr.aws. Google documents mirror.gcr.io only as a daemonregistry-mirrorstarget, and keeps an image only while it's asked for. Our pinned digests are already older than their tags' current ones. AFROMnaming the mirror directly would have no fallback once a digest ages out, and these Dockerfiles ship in the wheel for users to build.local-backends.ymluses the same script. It replaces its two inline steps: the containerd store switch and the mirror pull loop. That logic now lives in one place, and the step still runs before the local registry starts.The script ports the local-backends steps. Docker 28 resolves a digest-pinned
FROMonly from an image under that exact name, anddocker tagrefuses digests, so a pinned base is also named in containerd. Docker reads containerd names only on the containerd image store, so dockerd is switched to it (keeping the existingdaemon.json) when a base is pinned and it isn't already on that store. A job whose bases are all tag-only, such as service-db, stays on the classic store.Verified on a VM like a hosted runner (Ubuntu 24.04, Docker 28.0.4, classic store with a
daemon.json):public.ecr.aws-based infra images, one at a time as the jobs run them, withpublic.ecr.awsblocked in/etc/hosts:infra_build.py smoke;manifest.v2;imagetools create, and its digest reads back with{{json .Manifest}}.log-driver.postgres:16-alpinefrompublic.ecr.aws.src tst) pulled and named every base in the tree.After this merges I'll dispatch the workflow on main again.
🤖 Generated with Claude Code


Confidence Score: 5/5
The PR appears safe to merge; no actionable issues were found.Summary
The PR adds
mirror_base_images.pyto pull base images frommirror.gcr.iounder the names the Dockerfiles already use.Reviews (2) · Last reviewed commit: "fix(release): pull the infra images' bas..." · Reviewed by Greptile