Skip to content

ci: space the ci-build image pull retries across a registry outage - #1211

Open
zancas wants to merge 1 commit into
devfrom
harden_ci_image_pull
Open

ci: space the ci-build image pull retries across a registry outage#1211
zancas wants to merge 1 commit into
devfrom
harden_ci_image_pull

Conversation

@zancas

@zancas zancas commented Jul 25, 2026

Copy link
Copy Markdown
Member

Hardens the integration buckets' ci-build image pull against transient registry outages. Based on dev so every PR benefits; the feat/nym stack picks it up on its next rebase.

The failure this prevents

In run 30166451562 (PR #1208) the "accounts" bucket lost all egress to registry-1.docker.io for over four minutes: four consecutive dial tcp <ip>:443: i/o timeout failures against four different registry IPs. Podman's default three retries fire one second apart, so all of them burned inside the outage, the step failed with exit 125, and the bucket's fail-all step cancelled the entire run, killing the APK build mid-compile. The two sibling buckets pulled the identical tag successfully in the same window: one runner's network, not the registry and not the tag.

The change

podman pull --retry 8 --retry-delay 45s. The attempts now span roughly thirteen minutes instead of four, long enough to ride out an egress blip while the bucket would otherwise be idling toward the ci-gate artifact hold anyway. A healthy pull is unchanged. A tag that was never published still fails on the first attempt, because podman retries only errors it classifies as transient (timeouts, 5xx, 429) and never 4xx responses such as manifest-unknown.

The flags require podman 4.7; the ubuntu-24.04 runners ship 4.9.

🤖 Generated with Claude Code

On 2026-07-25 one integration bucket lost all egress to
registry-1.docker.io for over four minutes (run 30166451562): every
dial timed out after 60 seconds, podman's default three back-to-back
retries burned out inside the outage, and the bucket's fail-all step
cancelled the whole run. The two sibling buckets pulled the same tag
successfully in the same window, so this was a single runner's network,
not the registry or the tag.

Pull with --retry 8 --retry-delay 45s so the attempts span roughly
thirteen minutes instead of four. A healthy pull is unaffected, and a
tag that was never published still fails on the first attempt because
podman does not retry 4xx registry responses. The flags need podman
4.7; the ubuntu-24.04 runners ship 4.9.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant