CI/CD
¿Qué es CI/CD?
CI/CD son las siglas de Continuous Integration (Integración Continua) y Continuous Delivery/Deployment (Entrega/Despliegue Continuo). Son un conjunto de prácticas y herramientas que automatizan el proceso de llevar el código desde el repositorio hasta producción, pasando por pruebas automáticas.
En lugar de integrar y desplegar de forma manual y esporádica, CI/CD lo hace de forma automática y constante, detectando errores antes y reduciendo el riesgo de cada publicación.
CI vs CD: ¿cuál es la diferencia?
| ¿Qué hace? | ¿Cuándo? | |
|---|---|---|
| CI (Integración Continua) | Construye y prueba el código automáticamente cada vez que alguien hace un push | En cada commit o pull request |
| CD Delivery (Entrega Continua) | Prepara el artefacto listo para desplegar, pero requiere aprobación manual | Tras pasar la CI |
| CD Deployment (Despliegue Continuo) | Despliega automáticamente a producción si todos los tests pasan | Sin intervención humana |
¿Para qué sirve?
Sin CI/CD, integrar el trabajo de varios desarrolladores es arriesgado: los conflictos se acumulan, los bugs se descubren tarde y los despliegues son eventos estresantes que se evitan todo lo posible.
CI/CD resuelve esto haciendo que cada pequeño cambio pase por un pipeline automático que:
- Compila el proyecto y detecta errores de sintaxis o dependencias
- Ejecuta los tests unitarios, de integración y end-to-end
- Analiza la calidad del código (linting, cobertura)
- Construye el artefacto final (build de producción, imagen Docker, etc.)
- Despliega en staging o producción según la configuración
Ejemplo: pipeline con GitHub Actions
GitHub Actions es una de las herramientas más populares para CI/CD en proyectos web. Se configura con un archivo YAML en .github/workflows/:
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout del código
uses: actions/checkout@v4
- name: Instalar Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Instalar dependencias
run: npm ci
- name: Linting
run: npm run lint
- name: Tests
run: npm run test
- name: Build
run: npm run build
Con esto, cada vez que alguien abre un pull request o hace push, GitHub ejecuta este pipeline automáticamente y avisa si algo falla antes de mergear.
Herramientas más usadas
| Herramienta | Descripción |
|---|---|
| GitHub Actions | Integrado en GitHub, gratis para repos públicos |
| GitLab CI/CD | Integrado en GitLab, muy potente |
| Jenkins | Open source, muy configurable, requiere infraestructura propia |
| CircleCI | SaaS, rápido y fácil de configurar |
| Vercel / Netlify | CI/CD automático orientado a frontend |
Conceptos relacionados
Docker Git npm KubernetesConclusión
CI/CD transforma los despliegues de eventos arriesgados y poco frecuentes en operaciones rutinarias y seguras. Adoptar un pipeline básico, aunque sea solo con tests y build automático, mejora inmediatamente la calidad del código y la confianza del equipo para publicar cambios.