GitLab Runner: Wiederholte Builds beschleunigen

Diese Dokumentation ist Teil des Docker-Images bauen-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Bauen und pushen Sie Docker-Images effizient aus Ihren GitLab CI/CD-Pipelines mit Stackhero Runnern und Docker-in-Docker.

👋 Willkommen in der Stackhero-Dokumentation!

Stackhero bietet Ihnen eine unkomplizierte GitLab Runner Cloud-Lösung, mit der Sie Ihre GitLab CI/CD-Jobs effizient und ohne Aufwand ausführen können. Das erwartet Sie:

  • Unbegrenzte CI/CD-Minuten: Führen Sie Ihre Pipelines so oft aus, wie Sie möchten – ohne Abrechnung pro Minute oder unerwartete Zusatzkosten.
  • Mehrere gleichzeitige Jobs: Beschleunigen Sie Ihre Entwicklung, indem Sie mehrere Jobs parallel ausführen.
  • Der Docker Executor mit Docker-in-Docker-Unterstützung: Erstellen und pushen Sie Container-Images ganz einfach als Teil Ihres CI/CD-Prozesses.
  • Funktioniert nahtlos mit GitLab.com und self-managed GitLab-Instanzen.
  • Eine private, dedizierte Infrastruktur mit schneller NVMe/SSD-Speicherung sorgt für stabile und vorhersehbare Build-Performance.
  • Verfügbar in den Regionen 🇪🇺 Europa und 🇺🇸 USA, passend zu den Anforderungen Ihres Teams.

Sparen Sie Zeit: Sie können Ihren ersten GitLab Runner verbinden und bereits nach wenigen Minuten mit Ihren Pipelines starten!

Die Festplatte Ihres Runners bleibt zwischen den Pipelines bestehen, sodass Sie Image-Layer als Build-Cache wiederverwenden können. Das macht wiederholte Builds deutlich schneller. Hier ein Beispiel für eine entsprechende Konfiguration:

build-cached:
  stage: build
  image: docker:29
  services:
    - name: docker:29-dind
      alias: docker
  variables:
    DOCKER_HOST: "tcp://docker:2375"
    DOCKER_TLS_CERTDIR: ""
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script:
    # Die neueste Image-Version ziehen, um den Cache zu initialisieren (falls vorhanden):
    - 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"

Mit diesem Ansatz können Ihre Builds den Layer-Cache von Docker nutzen, sodass nur neue oder geänderte Layer neu gebaut werden.