fix(ci): smoke-containers pulls base images mirror-first with fallback + retry (#137) #138
Inga granskare
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-infra!138
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "feat/137-smoke-mirror-pull"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
Closes #137 (phase 1). Makes CI resilient to external-registry outages like the codeberg.org 504 that flaked PR #136's smoke job, and stops fetching base images from outside the instance on every run (principle 1).
Changes
registry-mirrorrole — mirror the smoke base images into the Forgejo registry alongside the existing Renovate entry: forgejo/postgres/caddy via the group_vars*_image/*_image_tagrefs (so a Renovate tag bump flows through automatically, no duplicated pin), and kanidm as a literal (its var isn't global; comment notes to keep it in lockstep withroles/kanidm/defaults).scripts/smoke-containers.py—load_mirror_map()builds upstream→mirror refs from the role config;pull_image()tries the mirror first (one shot), then the upstream with retries + backoff. The fallback makes it non-breaking while the mirror is populated; the retry alone already survives the transient-5xx class that flaked #136.Validation
python3 -m py_compileclean;ansible-lint roles/registry-mirrorpasses (production profile).load_mirror_mapresolves all 5 entries;pull_imagecovers mirror-hit, mirror-miss→upstream, upstream-504-retry-then-success (the #136 flake), unmapped→upstream, and total-failure reporting.Remaining (tracked in #137, needs prod)
site.yml→ the mirror timer populates the 4 new packages.podman loginin the CI workflow. Until then, mirror-first falls back to upstream (still fixed by the retry). smoke currently skipsgit.gitborg.se/…as "not pullable in CI", which is exactly this gap.