GitLab Runner: Przyspieszanie powtarzających się buildów

Ta dokumentacja jest częścią przewodnika Budowanie obrazów Docker. Pełny przewodnik znajdziesz tutaj: Buduj i wysyłaj obrazy Docker bezpośrednio z pipeline’ów GitLab CI/CD, korzystając z własnego Stackhero runnera i Docker-in-Docker.

👋 Witamy w dokumentacji Stackhero!

Stackhero oferuje łatwe w użyciu rozwiązanie GitLab Runner cloud, zaprojektowane do wydajnej obsługi zadań GitLab CI/CD. Oto, czego możesz się spodziewać:

  • Nielimitowane minuty CI/CD: brak rozliczania za minuty, więc Twoje pipeline'y mogą działać zawsze, gdy tego potrzebujesz.
  • Wiele równoczesnych zadań: uruchamiaj kilka jobów jednocześnie, aby przyspieszyć cały pipeline.
  • Docker executor z obsługą Docker-in-Docker: usprawnij budowanie i wysyłanie swoich obrazów kontenerów.
  • Kompatybilny zarówno z GitLab.com, jak i każdą samodzielnie zarządzaną instancją GitLab.
  • Prywatna, dedykowana maszyna wirtualna (VM) oparta na szybkich dyskach NVMe/SSD, zapewniająca stabilne i niezawodne buildy.
  • Dostępny w regionach 🇪🇺 Europa oraz 🇺🇸 USA.

Oszczędzaj czas: możesz podłączyć swojego pierwszego GitLab Runnera i uruchomić pipeline'y w zaledwie kilka minut!

Ponieważ dysk runnera jest trwały pomiędzy pipeline’ami, możesz przyspieszyć budowanie, wykorzystując poprzednie warstwy obrazu jako cache. Oto jak można to skonfigurować:

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:
    # Spróbuj pobrać najnowszy obraz, aby zasilić cache (nie szkodzi, jeśli jeszcze nie istnieje):
    - 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"

Takie podejście pozwala Twoim pipeline’om z czasem działać coraz szybciej, dzięki efektywnemu wykorzystaniu cache warstw Docker.