Aller au contenu

imglife check

imglife check [flags]

Conçu pour les pipelines CI applicatifs. Vérifie que l’image de base utilisée dans un build est la dernière version disponible et n’approche pas de sa fin de vie. Peut bloquer le job CI avec --strict si la base est obsolète ou en EOL.

Flag Requis Description
--base string oui Tag complet de l’image de base à vérifier
--config-url string non URL pour récupérer le imglife.yaml du projet base-images
--eol-data-url string non URL pour récupérer le fichier de données EOL
--strict non Code non-zéro si la base est obsolète, en EOL, ou si la donnée EOL de son cycle est absente
--warn non Afficher les avertissements mais toujours quitter avec 0
--output string non Format de sortie : text (défaut) ou json
Terminal window
# Vérification informative (n'échoue jamais)
imglife check --base registry.example.com/bases/alpine:3.21.3-core1.0.0
# Mode strict : échoue si la base est obsolète ou en EOL
imglife check \
--base registry.example.com/bases/alpine:3.21.3-core1.0.0 \
--strict
# Sortie JSON pour traitement programmatique
imglife check \
--base registry.example.com/bases/alpine:3.21.3-core1.0.0 \
--output json
# Avec URLs explicites de config et données EOL
imglife check \
--base "$BASE_IMAGE" \
--config-url "https://gitlab.example.com/.../imglife.yaml/raw" \
--eol-data-url "https://gitlab.example.com/.../eol-data.yaml/raw"
  1. imglife résout le imglife.yaml du projet base-images (depuis le Package Registry ou --config-url).
  2. Il trouve l’entrée dans build.images correspondant à l’image et au tag vérifiés — si plusieurs blocs partagent un folder, celui dont la ligne de version accepte le tag l’emporte.
  3. Il compare le tag courant avec le dernier tag disponible de cette ligne : une app sur JDK 8 ne se voit donc jamais proposer un tag JDK 25 du même dépôt. Sans fichier de configuration, les candidats sont filtrés par variante de tag.
  4. Il interroge les données EOL (depuis le Package Registry ou --eol-data-url) pour vérifier le statut du cycle de vie de cette ligne.
  5. Il rapporte le résultat.
{
"base": "registry.example.com/bases/alpine:3.21.3-core1.0.0",
"latest": "registry.example.com/bases/alpine:3.21.3-core1.2.0",
"up_to_date": false,
"eol_date": "2026-11-01",
"eol_status": "ok",
"warnings": ["base image is outdated: latest is 3.21.3-core1.2.0"]
}
check-base:
stage: validate
image: registry.gitlab.com/imglife-project/imglife:latest
variables:
IMGLIFE_CONFIG: imglife.apps.yaml
script:
- |
imglife check \
--base "$BASE_IMAGE" \
--strict
rules:
- if: $CI_COMMIT_TAG

imglife.apps.yaml ne contient que la section registry: pointant vers le projet base-images.

Si le Package Registry est indisponible, imglife check journalise un avertissement et quitte avec 0 (sauf si --strict est défini). Cela empêche les pannes de données EOL de bloquer tous les builds applicatifs.

Lorsque le cycle de l’image vérifiée ne peut pas être résolu, le motif est reporté dans eol_skip_reason et eol_data_missing passe à true. Ce cas n’est pas bloquant par défaut : seul --strict le transforme en exit 1.

Motif Signification
no EOL data for cycle <produit>/<cycle> Cycle absent du cache — lancer imglife eol update
cycle <produit>/<cycle> older than any available EOL data L’image est sur un cycle antérieur à tout ce que connaît le provider
eol data unavailable La source de données elle-même n’a pas pu être lue

Lorsque le cycle est plus récent que tout ce que connaît le provider, le statut du cycle précédent est hérité à la place (si ce cycle est encore supporté) et eol_inferred_from le nomme.

Code Signification
0 Image de base OK (ou --warn défini)
1 Base en/après EOL — ou obsolète / donnée EOL absente avec --strict
2 Erreur de configuration ou réseau