GitLab CI: configuración, stages y variables para automatización
Clase 23 de 53 • Curso de DevOps con GitLab
Resumen
GitLab CI reúne en un solo lugar la automatización que necesitas para integrar código de forma continua, reducir riesgos y acelerar entregas con confianza. Con un único archivo de configuración, .gitlab-ci.yml, puedes construir, probar y desplegar cambios de manera consistente y con poca intervención humana.
¿Qué hace GitLab CI en Continuous Integration y DevOps?
GitLab CI es el hub central de automatización que orquesta builds, tests y deploys continuos. Minimiza el riesgo de bugs nuevos y evita versiones que no compilan o no funcionan. Toda la configuración vive en .gitlab-ci.yml, escrito en yaml, un formato similar a json pero más legible.
- Automatización end-to-end desde que el desarrollador termina cambios hasta llegar a dispositivos de clientes.
- Menos fricción: menos pasos manuales y mayor consistencia.
- Configuración declarativa: se prioriza la claridad sobre la lógica compleja.
¿Cómo se conectan Continuous Delivery y Continuous Deployment?
- Continuous Delivery: siempre hay un artefacto listo para producción, pero el release se realiza con una acción manual aprobatoria.
- Continuous Deployment: el paso a producción se automatiza por completo; los releases suceden continuamente sin pasos manuales.
¿Cómo fluye el pipeline desde Source Control?
- Nuevo branch, commits y push al repositorio central detonan jobs de build y test.
- Si las pruebas fallan, se bloquea el merge con merge requests, evitando que código defectuoso llegue a producción.
- Ambientes dinámicos para review apps: con clusters como Kubernetes, cada branch puede levantar una app vinculada a la interfaz del merge request para ver cambios con un clic.
- Tras el merge, el deploy puede dispararse por Continuous Delivery (manual) o Continuous Deployment (automatizado).
¿Por qué los contenedores definen el ambiente?
- image global: .gitlab-ci.yml declara un contenedor base para el pipeline.
- Ejemplos: Node para Angular, Python para Flask.
- Hay miles de imágenes disponibles con los artefactos necesarios para tu build.
¿Cómo se configura .gitlab-ci.yml con keywords y stages?
El archivo es declarativo y se organiza por keywords. La mejor práctica es mover la lógica compleja a scripts externos, por ejemplo en package.json (sección scripts) o bash, dejando a .gitlab-ci.yml definir “qué” se ejecuta y “cuándo”.
¿Qué stages y jobs necesitas?
- Stages típicos: build, test y deploy. Puedes añadir otros como generar documentación o notificar en Slack.
- Jobs: tareas con nombre propio asignadas a un stage específico.
- variables: se pueden definir a nivel global o por job.
- script: la “carnita”, donde se automatiza lo que ocurrirá.
image: node:latest
stages:
- build
- test
- deploy
Compile:
stage: Build
variables:
ENV: dev
script:
- ng build
only:
- branches
# También puedes usar 'accept' para definir cuándo no corre.
¿Cuándo debe ejecutar cada job?
- only y también accept permiten definir condiciones de ejecución.
- Otros keywords útiles a explorar: before script y after script para tareas previas y posteriores al job.
¿Qué tipos de variables ofrece GitLab CI y para qué sirven?
GitLab CI expone múltiples tipos de variables para parametrizar y asegurar tus pipelines. Bien usadas, refuerzan la seguridad, trazabilidad y control de despliegues.
¿Qué variables automatizan builds y despliegues?
- trigger variables: se inyectan automáticamente al detonar un nuevo build.
- project variables: propias del proyecto, útiles para credenciales o tokens.
- protected variables: visibles solo en proyectos o branches definidos, por ejemplo, secretos de producción expuestos únicamente en el branch master.
- group variables: disponibles a nivel de grupo para compartir configuración.
- variables de job: declaradas dentro de cada job en GitLabCI.yml.
- variables globales: definidas en la raíz de .gitlab-ci.yml.
- variables de deployment: usadas cuando se integran servicios de despliegue, como al conectar con Kubernetes.
- predefined variables: expuestas por GitLab en cada trabajo. Útiles para auditoría y trazabilidad porque incluyen, por ejemplo, el commit SHA que detonó el build, los tags y las referencias del job.
¿Con qué keywords y variables comenzarías a automatizar tu pipeline en GitLab CI? Comparte en comentarios tus casos de uso y en qué parte integrarías before script y after script.