Después de años trabajando con GitLab CI/CD en varios proyectos, aquí hay cinco prácticas que consistentemente entregan pipelines más rápidos y confiables.

1. Usar caché inteligentemente

Cachear dependencias entre jobs para evitar re-descargarlas cada vez:

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - node_modules/
    - .npm/

La key asegura que diferentes ramas tengan cachés separados.

2. Paralelizar tus tests

Dividir tu suite de tests en múltiples jobs:

test:
  parallel: 4
  script:
    - npm run test -- --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL

Esto puede reducir el tiempo de test de 20 minutos a 5 minutos.

3. Usar rules: en lugar de only/except

La nueva sintaxis rules: es más potente y legible:

deploy:
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
      when: on_success
    - when: never

4. Optimizar imágenes Docker

Usar imágenes base pequeñas y builds multi-stage. Las imágenes basadas en Alpine pueden ser 10x más pequeñas que las basadas en Ubuntu.

5. Fallar rápido

Poner verificaciones rápidas (linting, formateo) al inicio del pipeline. No tiene sentido ejecutar una suite de tests de 20 minutos si el código ni siquiera compila.


¿Cuáles son tus optimizaciones CI/CD favoritas? Nos encantaría escucharlas.