Aller au contenu
CI/CD & Automatisation medium

Lab 09 — Publier dans le registry

5 min de lecture

logo gitlab

Construire une image dans un job CI ne suffit pas. Si vous ne la poussez pas dans un registry, elle disparaît à la fin du job. Le résultat est perdu et votre équipe ne peut pas réutiliser l’image pour déployer. Ce lab vous apprend à publier proprement vos images dans GitLab Container Registry avec des tags exploitables.

  • Utiliser $CI_REGISTRY_IMAGE et les identifiants CI injectés par GitLab
  • Publier une image avec un tag traçable ($CI_COMMIT_SHORT_SHA)
  • Maintenir un tag latest sans perdre la traçabilité
  • Vérifier la présence de l’image dans l’UI GitLab

Un pipeline qui ne publie pas ses artefacts finaux est incomplet. En pratique, les équipes ont besoin d’une image versionnée pour :

  • déployer en staging puis production
  • rollback sur une version précise
  • reproduire un incident avec l’image exacte

Sans tag immuable, vous perdez la traçabilité. Sans docker login, le push échoue. Sans discipline de tag, vous déployez au hasard.

  1. Passez sur la branche du lab

    Fenêtre de terminal
    cd pipeline-craft
    git checkout starter/lab-09
  2. Vérifiez le job docker-build

    Le job construit l’image mais la publication peut être incomplète ou mal taggée.

Vous devez standardiser la publication :

  • authentification registry systématique
  • tag immuable pour chaque commit
  • tag latest pour l’image courante

L’objectif est de pouvoir dire précisément : “la version en prod correspond à ce commit”.

  1. Configurez le script du job de build

    docker-build:
    stage: build
    image: docker:27
    services:
    - docker:27-dind
    variables:
    DOCKER_TLS_CERTDIR: "/certs"
    script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
    - docker build -t $CI_REGISTRY_IMAGE:latest .
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
    - docker push $CI_REGISTRY_IMAGE:latest
  2. Comprenez la logique de tag

    Le tag SHA est immuable. Il permet un rollback propre. Le tag latest est pratique pour les environnements de test, mais ne doit pas être votre seule référence en production.

  1. Commitez puis poussez

    Fenêtre de terminal
    git add .gitlab-ci.yml
    git commit -m "ci: publish image to gitlab container registry"
    git push origin starter/lab-09
  2. Ouvrez Packages & Registries > Container Registry

    Vérifiez que les deux tags sont présents.

  3. Notez le lien entre image et commit

    Le tag SHA vous permet de retrouver la source exacte de l’image.

Étape 3 — Préparer la publication package (option)

Section intitulée « Étape 3 — Préparer la publication package (option) »
  1. Vérifiez que votre projet est compatible packaging

  2. Préparez un job dédié pour un lab ultérieur

    Ce lab se concentre sur le registry d’images. La publication package pourra être ajoutée ensuite avec twine.

  • docker login passe sans erreur
  • Le push des deux tags réussit
  • Les tags sont visibles dans Container Registry
  • Vous pouvez relier un tag SHA à un commit Git

Le tag latest seul est insuffisant pour investiguer un incident. Utilisez toujours un tag immuable en parallèle.

Un autre piège fréquent est de supposer que les credentials registry doivent être ajoutés à la main. Dans GitLab CI, ils sont déjà injectés via les variables prédéfinies si le registry est activé.

  • Une image non poussée est perdue à la fin du job
  • CI_REGISTRY_* simplifie l’authentification sécurisée
  • Le duo SHA + latest couvre traçabilité et usage courant
  • La publication registry est une étape clé vers un déploiement fiable

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn