GitLab Runner: Accélérer les builds répétés

Cette documentation fait partie du guide Construction d'images Docker. Consultez le guide complet ici : Construisez et poussez des images Docker depuis vos pipelines GitLab CI/CD en utilisant votre runner Stackhero et Docker-in-Docker.

👋 Bienvenue sur la documentation de Stackhero !

Stackhero vous propose une solution GitLab Runner cloud simple à utiliser, conçue pour exécuter efficacement vos jobs GitLab CI/CD. Voici ce dont vous pouvez bénéficier :

  • Minutes CI/CD illimitées : aucune facturation à la minute, vos pipelines s'exécutent quand vous en avez besoin.
  • Jobs simultanés : lancez plusieurs jobs en parallèle pour accélérer l'ensemble de votre pipeline.
  • Docker executor avec prise en charge de Docker-in-Docker : facilitez la création et le push de vos images de conteneurs.
  • Compatible avec GitLab.com ainsi que toute instance GitLab auto-hébergé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 lancez vos pipelines en quelques minutes seulement !

Comme le disque de votre runner est persistant entre les pipelines, vous pouvez accélérer les builds en réutilisant les couches d'images précédentes comme cache. Voici comment configurer cela :

build-cached:
  stage: build
  image: docker:27
  services:
    - docker:27-dind
  variables:
    DOCKER_TLS_CERTDIR: "/certs"
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script:
    # Essayez de récupérer la dernière image pour alimenter le cache (ce n'est pas grave si elle n'existe pas encore) :
    - docker pull "$CI_REGISTRY_IMAGE:latest" || true
    - docker build --cache-from "$CI_REGISTRY_IMAGE:latest" -t "$CI_REGISTRY_IMAGE:latest" .
    - docker push "$CI_REGISTRY_IMAGE:latest"

Cette méthode permet à vos pipelines de s'exécuter plus rapidement au fil du temps en tirant parti du cache de couches Docker.