fix(ci): rétention registre compatible index OCI — fin du GC destructeur #33
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/registry-gc-multiarch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Incident (4e incident registre — 2026-07-21)
Le registre entier est impullable : tous les tags de
gungnirETgungnir-updater(y comprislatestet le 5.134.1 publié la veille) servent des index OCI dont le manifest enfant amd64 répond 404. Découvert par la migration de l'install Yannick (migrate.sh 5.134.1→content at …manifests/sha256:334fa6… not found). La prod n'est pas touchée (elle build en local), mais aucun self-hosteur ne peut pull.Cause racine
Nos images sont des index OCI multi-manifest (BuildKit : manifest amd64 + manifest d'attestation). L'étape « Rétention du registre » (ajoutée au 3e incident disque, 07-17) termine par
garbage-collect --delete-untagged— or ce mode traite les manifests enfants d'un index comme « untagged » (ils sont référencés par l'index, jamais par un tag) et les détruit. Chaque release depuis le 17-07 éventrait donc tout le registre, y compris l'image qu'elle venait de publier 30 secondes avant.Fix (3 règles gravées en commentaire du workflow)
--delete-untaggedsur un registre qui sert du multi-manifest — GC simple des blobs orphelins.Validé : YAML parse +
bash -ndu bloc extrait ; helperchildren()testé contre le vrai registre (index → 2 digests, 404 → vide propre).Réparation du contenu détruit
Le contenu est perdu (manifests + blobs GC-és) : la release suivante re-publie les deux images et restaure un registre pullable. Les cadavres 5.132→5.134.1 restent listés mais impullables (personne ne pin ces versions ; ils sortiront de la fenêtre KEEP=3 au fil des releases).
🤖 Generated with Claude Code