Aller au contenu

imglife cleanup

imglife cleanup [flags]

Applique la politique retention à toutes les images déclarées dans build.images et leurs miroirs correspondants. Supprime (ou archive) les tags dépassant keep_last ou max_age_days.

Flag Défaut Description
--dry-run false Simuler les suppressions sans effectuer de changement
--list false Afficher les tags concernés et quitter
--force false Outrepasser le garde-fou et nettoyer même si aucune image de base référencée par une application n’est trouvée
Terminal window
# Aperçu : afficher ce qui serait supprimé
imglife cleanup --list
# Dry-run : simuler sans supprimer
imglife cleanup --dry-run
# Appliquer la politique de rétention
imglife cleanup

Un tag est candidat à la suppression s’il satisfait l’une des conditions suivantes :

  1. Sa position dans la liste triée de sa ligne de version dépasse keep_last.
  2. Son horodatage de création est plus ancien que max_age_days jours.

Les tags listés dans retention.exclude_tags ne sont jamais supprimés.

Le classement est effectué par ligne de version, jamais sur l’ensemble du dépôt : une ligne par entrée sync visant ce dépôt (avec son propre keep_last, à défaut retention.keep_last) et une ligne par bloc build.images qui le produit. Trois blocs folder: jdk figés sur JDK 8, 11 et 25 conservent donc chacun leurs keep_last tags — la ligne la plus récente n’évince plus les anciennes. Les tags d’un dépôt miroir ne correspondant à aucune ligne restent classés ensemble sous retention.keep_last.

Un tag d’image de base est également protégé lorsqu’il est référencé par un build record applicatif stocké dans le package registry. Pour éviter une suppression massive, lorsque des build.images sont configurées mais que des build records applicatifs existent sans donner aucune image de base référencée — ou que certains records ne peuvent pas être lus — le cleanup s’interrompt au lieu de considérer toutes les images de base comme non référencées.

Le garde-fou ne s’active pas lorsque le package registry indique proprement qu’il ne contient aucun build record applicatif : il s’agit alors d’un projet jeune dont les pipelines applicatifs n’ont encore rien publié, sans rien qui puisse être pris à tort pour « non référencé ». Le cleanup procède alors selon les politiques keep_last / max_age_days normales. Un registry mal configuré ou injoignable se manifeste plus tôt par une erreur explicite, et non par une liste vide.

Utilisez --force pour outrepasser le garde-fou, par exemple une fois que tous les build records applicatifs ont réellement été supprimés. Le garde-fou ne s’active jamais pour les configurations miroir uniquement (sans build.images) ni en mode --dry-run/--list.

Quand retention.archive.enabled: true, les tags sont copiés vers retention.archive.registry avant suppression. Cela crée un filet de sécurité pour les images supprimées accidentellement.

Après retention.archive.keep_days jours, la copie archivée est supprimée lors du prochain cycle de cleanup.

imglife signale les images présentes dans le registry OCI mais qui ne sont plus déclarées dans build.images. Ces images dites « type-orphan » apparaissent dans la sortie --list avec un avertissement, mais ne sont pas supprimées automatiquement. Supprimez-les manuellement après vérification.

retention:
keep_last: 5
max_age_days: 90
exclude_tags: [latest, stable]
archive:
enabled: true
registry: registry.example.com/archive
keep_days: 180

Voir la configuration retention pour la référence complète.

Après chaque exécution (pas en mode --list), imglife affiche un résumé sur stdout :

Cleanup Summary · 3.8s
───────────────────────────────────
Tags examined 24
├─ Deleted 5
├─ Archived 2
├─ Kept 17
└─ Errors 0

En mode --dry-run, l’en-tête est préfixé par [dry-run]. Définir NO_COLOR=1 ou TERM=dumb pour désactiver les couleurs ANSI.

Code Signification
0 Cleanup terminé (y compris suppressions partielles)
1 Erreur fatale empêchant le cleanup