GitLab Runner: Acelerar compilaciones repetidas

Esta documentación forma parte de la guía Crear imágenes Docker. Consulte la guía completa aquí: Compila y publica imágenes Docker de forma eficiente desde tus pipelines de GitLab CI/CD utilizando los runners de Stackhero y Docker-in-Docker.

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero ofrece una solución sencilla de GitLab Runner en la nube que facilita la ejecución de sus trabajos de GitLab CI/CD de manera eficiente y sin complicaciones. Esto es lo que puede esperar:

  • Minutos ilimitados de CI/CD: ejecute sus pipelines tantas veces como necesite, sin facturación por minuto ni cargos inesperados.
  • Varios trabajos concurrentes: acelere su desarrollo ejecutando varios trabajos en paralelo.
  • El ejecutor Docker con soporte para Docker-in-Docker: construya y publique fácilmente imágenes de contenedores como parte de su proceso CI/CD.
  • Funciona perfectamente tanto con GitLab.com como con instancias de GitLab autogestionadas.
  • Una infraestructura privada y dedicada con almacenamiento NVMe/SSD rápido garantiza un rendimiento de compilación estable y predecible.
  • Disponible en las regiones de 🇪🇺 Europa y 🇺🇸 USA para adaptarse a las necesidades de su equipo.

Ahorre tiempo: puede conectar su primer GitLab Runner y empezar a ejecutar pipelines en solo unos minutos.

El disco de tu runner se mantiene entre pipelines, lo que te permite reutilizar las capas de imagen como caché de compilación. Esto puede hacer que las compilaciones repetidas sean mucho más rápidas. Aquí tienes un ejemplo de configuración:

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:
    # Descarga la última imagen para inicializar la caché (si existe):
    - 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"

Este enfoque permite que tus compilaciones aprovechen la caché de capas de Docker, por lo que solo se reconstruyen las capas nuevas o modificadas.