GitLab Runner: Pousser vers le registre de conteneurs GitLab

Cette documentation fait partie du guide Création d’images Docker. Consultez le guide complet ici : Construisez et poussez efficacement des images Docker à partir de vos pipelines GitLab CI/CD en utilisant les runners Stackhero et Docker-in-Docker.

👋 Bienvenue dans la documentation Stackhero !

Stackhero vous offre une solution GitLab Runner cloud facile à utiliser, conçue pour gérer efficacement vos jobs GitLab CI/CD. Voici ce à quoi vous pouvez vous attendre :

  • Minutes CI/CD illimitées : aucune facturation à la minute, vos pipelines s’exécutent dès que vous en avez besoin.
  • Plusieurs jobs simultanés : exécutez plusieurs jobs en même temps pour accélérer l’ensemble de votre pipeline.
  • Docker executor avec prise en charge de Docker-in-Docker : simplifiez la création et le push de vos images de conteneurs.
  • Compatible avec GitLab.com ainsi qu’avec toute instance GitLab autogérée.
  • Une VM privée et dédiée propulsée par des disques NVMe/SSD rapides pour des builds fiables et constants.
  • Disponible dans les régions 🇪🇺 Europe et 🇺🇸 USA.

Gagnez du temps : connectez votre premier GitLab Runner et commencez à exécuter vos pipelines en quelques minutes seulement !

GitLab fournit des variables prédéfinies (CI_REGISTRY, CI_REGISTRY_USER, CI_REGISTRY_PASSWORD, CI_REGISTRY_IMAGE) pour que votre pipeline puisse s’authentifier et pousser des images vers le registre de conteneurs de votre projet de façon sécurisée. Aucun secret supplémentaire n’est requis.

Voici un exemple de job qui construit et pousse votre image :

build-and-push:
  stage: build
  image: docker:29
  services:
    - docker:29-dind
  variables:
    DOCKER_TLS_CERTDIR: "/certs"
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script:
    - docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
    # Si vous êtes sur la branche par défaut, vous pouvez aussi taguer et pousser "latest" :
    - |
      if [ "$CI_COMMIT_BRANCH" = "$CI_DEFAULT_BRANCH" ]; then
        docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest"
        docker push "$CI_REGISTRY_IMAGE:latest"
      fi

Pour pousser vos images vers un autre registre (par exemple Docker Hub ou un registre privé), vous pouvez stocker les identifiants dans les variables CI/CD et les utiliser avec docker login de la même façon.