imglife build
Synopsis
Section intitulée « Synopsis »imglife build [nom] [flags]Quand l’argument optionnel [nom] est fourni, seule l’image dont le champ name correspond est construite (ex. golang-core). Sans argument, toutes les images de build.images sont construites.
Pour chaque image dans build.images, imglife :
- Rend
Dockerfile.tmplavec les variables de l’image. - Injecte les labels OCI (date de build, révision git, référence image de base).
- Appelle
docker build(oudocker buildx buildpour le multi-arch). - Pousse l’image vers le registry configuré.
- Exécute les hooks
post_image_build.
| Flag | Défaut | Description |
|---|---|---|
--dry-run |
false |
Rendre les Dockerfiles sans construire ni pousser |
--list |
false |
Afficher ce qui serait construit et quitter |
--force |
false |
Écraser les images existantes dans le registry |
--output-dir string |
— | Écrire les contextes de build dans un répertoire au lieu de construire |
Exemples
Section intitulée « Exemples »# Construire toutes les images configuréesimglife build
# Construire uniquement l'image nommée "golang-core"imglife build golang-core
# Aperçu — afficher quelles images seraient construitesimglife build --list
# Dry-run — rendre les Dockerfiles, sans docker buildimglife build --dry-run
# Force — reconstruire même si l'image existe déjà dans le registryimglife build --force
# Écrire les contextes pour un builder externe (Kaniko, Buildah)imglife build --output-dir /tmp/build-contextsMode output-dir
Section intitulée « Mode output-dir »Quand --output-dir est défini, imglife écrit un sous-répertoire par image :
/tmp/build-contexts/ alpine/ Dockerfile # rendu depuis le template build.json # manifest de build (tag, plateformes, etc.) golang/ Dockerfile build.jsonLe manifest build.json contient :
{ "tag": "registry.example.com/bases/alpine:3.21.3-core1.0.0", "platforms": ["linux/amd64", "linux/arm64"], "labels": { "org.opencontainers.image.created": "..." }}Ce mode est conçu pour les environnements CI utilisant des builders rootless comme Kaniko ou Buildah qui requièrent le contexte de build sous forme de fichiers. Voir Images de base — GitLab CI pour un exemple complet.
Builds multi-architecture
Section intitulée « Builds multi-architecture »Quand build.platforms contient plus d’une entrée, imglife utilise docker buildx build --push pour produire un manifest multi-arch. Un builder buildx avec le driver docker-container est requis.
build: platforms: [linux/amd64, linux/arm64] builder: imglife-builderCréer le builder :
docker buildx create \ --name imglife-builder \ --driver docker-container \ --bootstrapLabels OCI injectés
Section intitulée « Labels OCI injectés »imglife passe ces valeurs via --label à docker build, ce qui alimente le config.Labels de l’image. Quand un builder buildx est configuré (build.builder), les mêmes valeurs sont aussi injectées comme annotations OCI manifest via --annotation, visibles avec docker buildx imagetools inspect. Pour les builds multi-plateforme, les annotations sont également ajoutées au niveau de l’image index.
| Label / Annotation | Valeur | Condition |
|---|---|---|
org.opencontainers.image.version |
Version de l’image produite | toujours |
org.opencontainers.image.base.name |
Référence complète de l’image miroir | toujours |
org.opencontainers.image.created |
Horodatage de build (RFC 3339) | toujours |
imglife.type |
Type d’image (core, spe, …) |
toujours |
imglife.core-version |
Valeur de build.core_version |
toujours |
org.opencontainers.image.base.digest |
Digest SHA256 de l’image miroir | si résolvable |
imglife.platforms |
Plateformes cibles (linux/amd64,…) |
si configurées |
org.opencontainers.image.revision |
Variable d’env $IMGLIFE_REVISION |
si env var définie |
org.opencontainers.image.source |
Variable d’env $IMGLIFE_SOURCE |
si env var définie |
org.opencontainers.image.url |
Variable d’env $IMGLIFE_URL |
si env var définie |
Ces labels sont consommés par imglife register pour la détection automatique de l’image de base et des plateformes.
Définir les variables optionnelles dans le job CI pour alimenter les labels de traçabilité :
# GitLab CI — job build-basesvariables: IMGLIFE_REVISION: $CI_COMMIT_SHA # → org.opencontainers.image.revision IMGLIFE_SOURCE: $CI_PROJECT_URL # → org.opencontainers.image.source IMGLIFE_URL: $CI_PROJECT_URL/container_registry # → org.opencontainers.image.urlRapport de fin d’exécution
Section intitulée « Rapport de fin d’exécution »Après chaque exécution (pas en mode --list), imglife affiche un résumé sur stdout :
Build Summary · 12.1s ─────────────────────────────────── Base images in config 4 ├─ Built 2 ├─ Already exists 2 └─ Errors 0En 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.
Codes de sortie
Section intitulée « Codes de sortie »| Code | Signification |
|---|---|
0 |
Toutes les images construites et poussées avec succès |
1 |
Une ou plusieurs constructions ont échoué |