¿Qué es CI/CD?
También llamado: integración continua, despliegue continuo, entrega continua, pipeline, GitHub Actions
Definición
CI/CD (integración y despliegue continuos) es la práctica de automatizar las pruebas y la publicación del código: cada cambio que se sube al repositorio se comprueba, se construye y, si todo va bien, se despliega solo.
- CI (Continuous Integration): cada vez que alguien sube código a Git, se ejecutan automáticamente las pruebas y la construcción. Los errores se detectan en minutos, no el día de la publicación.
- CD (Continuous Delivery/Deployment): si la CI pasa, el código se publica automáticamente en staging o en producción.
Ejemplo
Un pipeline de GitHub Actions que construye este diccionario con Jekyll y lo sube al hosting por SSH al hacer push en main:
# .github/workflows/deploy.yml
name: Publicar
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- run: bin/build
- name: Subir por rsync
env:
SSH_KEY: ${{ secrets.SSH_KEY }}
run: |
echo "$SSH_KEY" > key && chmod 600 key
rsync -az --delete -e "ssh -i key -o StrictHostKeyChecking=accept-new" \
_site/ usuario@example.com:public_html/
Las credenciales (la clave SSH) se guardan como secretos del repositorio, nunca en el código.
Herramientas habituales
GitHub Actions, GitLab CI/CD, Bitbucket Pipelines, Jenkins, Woodpecker, Drone… La idea es la misma en todas: un archivo en el repositorio describe los pasos.
Errores habituales
- Pipelines sin pruebas: automatizan la publicación de errores.
- Dar al pipeline más permisos de los necesarios (una clave con acceso de
rootal servidor, por ejemplo).
¿Tienes un producto o servicio relacionado con CI/CD? Anúnciate en este término.
Términos relacionados
- GitGit es un sistema de control de versiones: guarda el historial completo de cambios...
- DespliegueUn despliegue es el proceso de publicar una nueva versión de una web o...
- Entorno de stagingUn entorno de staging es una copia de tu web o aplicación, lo más...
- DockerDocker es una herramienta para empaquetar una aplicación con todo lo que necesita (código,...
- WebhookUn webhook es un aviso automático que un servicio envía a una URL tuya...
- Infraestructura como códigoLa infraestructura como código (IaC) consiste en describir servidores, redes, DNS y demás recursos...
Categorías: DevOps