# CI/CD

> Automatización que construye, prueba y publica cada cambio, para que lanzar sea rutina.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/ci-cd/
- En inglés: [CI/CD](https://tidbit.legios.com.ar/ci-cd/)

**CI/CD** nombra dos prácticas ligadas. La **integración continua** (CI) significa que los developers suman sus cambios al código compartido seguido, al menos una vez por día, y cada integración dispara automáticamente un build y una corrida de los tests automáticos. Si algo se rompe, el equipo se entera en minutos, con el cambio todavía fresco, y no semanas después.

La mitad CD tiene dos variantes. La **entrega continua** (continuous delivery) mantiene el código siempre listo para publicar: cada cambio que pasa los chequeos queda empaquetado y puede ir a producción apretando un botón. El **despliegue continuo** (continuous deployment) va un paso más allá y publica solo cada cambio que pasa, sin botón. Cada equipo elige según cuánto riesgo y cuánta aprobación humana necesita su producto.

La automatización corre como un **pipeline**: una lista de pasos escrita en un archivo dentro del repositorio, como "instalar, compilar, correr tests, buscar vulnerabilidades, armar la imagen del contenedor, desplegar en staging, desplegar en producción". Servicios como GitHub Actions, GitLab CI y Jenkins corren estos pipelines en cada push. La ganancia es que publicar software deja de ser un evento mensual que da miedo y pasa a ser algo chico, frecuente y aburrido, que es justo lo que querés.

## Una analogía

Una línea de montaje con controles de calidad en cada estación. Cada pieza se revisa apenas se agrega, y una fallada frena la cinta antes de llegar al cliente, no después de que salió un camión entero.

## Para quedarse

- CI: integrar seguido y probar cada cambio de forma automática.
- Entrega continua: siempre listo para publicar. Despliegue continuo: publica solo.
- El pipeline es un archivo en el repositorio, así que se versiona como el código.
- Los lanzamientos chicos y frecuentes son más fáciles de revisar y de deshacer que los grandes.

## Para seguir leyendo

- [¿Qué es la integración continua? (AWS)](https://aws.amazon.com/es/devops/continuous-integration/)
- [¿Qué es la entrega continua? (AWS)](https://aws.amazon.com/es/devops/continuous-delivery/)
- [Integración continua en Wikipedia](https://es.wikipedia.org/wiki/Integraci%C3%B3n_continua)

## Términos relacionados

- [Vulnerabilidad y CVE](https://tidbit.legios.com.ar/es/vulnerability-and-cve/): Una falla que permite abusar de un software, y el código público que la identifica.
- [Contenedor](https://tidbit.legios.com.ar/es/container/): Una caja cerrada con un programa y todo lo que necesita para correr en cualquier lado.
- [GitHub](https://tidbit.legios.com.ar/es/github/): Un sitio donde los equipos guardan su código con Git y trabajan juntos en él.
