CI/CD: conceptos y pipeline

10 min

Tabla de contenidos


1 — ¿Qué es CI/CD?

El CI/CD es la columna vertebral técnica de DevOps. Es el conjunto de prácticas que automatizan el camino entre «el código escrito por un desarrollador» y «la aplicación que corre en producción».

SiglaNombreEn una frase
CIIntegración continua (Continuous Integration)Se fusiona y se prueba el código a menudo y automáticamente.
CDEntrega continua (Continuous Delivery)El código probado está siempre listo para desplegarse (puesta en prod manual).
CDDespliegue continuo (Continuous Deployment)El código probado sale automáticamente a producción.

Sin CI/CD, entregar un software se parece a una mudanza a mano: lento, cansado y arriesgado. Con CI/CD, es una cinta transportadora automatizada: pones el código en un extremo, la aplicación llega lista al otro.

🔧 Mini-ejercicio — Relaciona cada sigla con su definición: (1) CI, (2) Continuous Delivery, (3) Continuous Deployment.

✅ Ver una solución

(1) CI = fusión + build + pruebas automáticas frecuentes. (2) Continuous Delivery = siempre listo para desplegar, botón manual para prod. (3) Continuous Deployment = puesta en prod automática tras pruebas exitosas.

↑ Volver arriba


2 — CI — Integración continua

La integración continua consiste en fusionar con frecuencia el código de todos los desarrolladores en una rama común, y validar automáticamente cada fusión con un build y pruebas.

¿Por qué «continua»?

Sin CICon CI
Se fusiona todo a fin de mes → conflictos grandes y dolorososSe fusiona varias veces al día → conflictos pequeños y fáciles
Los bugs se descubren tardeLos bugs se descubren en minutos
«Funcionaba en mi máquina»Build reproducible en el servidor

Analogía: ordenar la cocina sobre la marcha (CI) en vez de esperar a que todo esté sucio (integración «big bang»). El pequeño esfuerzo frecuente evita la catástrofe rara.

🔧 Mini-ejercicio — Un desarrollador guarda su código 3 semanas sin fusionarlo, luego intenta un merge grande. ¿Qué principio de integración continua no respetó, y qué consecuencia es probable?

✅ Ver una solución

No fusionó con frecuencia. Consecuencia probable: un conflicto de fusión masivo y difícil de resolver, y bugs detectados muy tarde. La CI recomienda fusiones pequeñas y frecuentes.

↑ Volver arriba


3 — CD — Entrega vs Despliegue continuo

Los dos «CD» se parecen pero diferencian en un solo punto: quién pulsa el botón de puesta en producción.

Continuous DeliveryContinuous Deployment
Puesta en producciónManual (un humano hace clic)Automática
ControlDecisión final humanaNinguna intervención
Ideal paraSectores regulados, releases planificadosEquipos maduros, alta tasa de pruebas

Continuous Delivery = el coche está aparcado delante de la puerta, listo, llaves puestas; tú decides cuándo arrancar. Continuous Deployment = el coche autónomo arranca solo en cuanto está listo.

🔧 Mini-ejercicio — Un banco quiere que cada puesta en producción la apruebe un responsable. ¿Qué «CD» elegir?

✅ Ver una solución

Continuous Delivery: el pipeline deja la versión lista automáticamente, pero la puesta en producción sigue siendo una decisión humana (validación del responsable).

↑ Volver arriba


4 — El pipeline CI/CD paso a paso

Un pipeline es una sucesión de etapas automatizadas (llamadas stages) que transforman el código fuente en aplicación desplegada. Si una etapa falla, el pipeline se detiene y se notifica al equipo.

StageRolEjemplo de herramienta
CheckoutRecuperar el código desde GitGit
BuildCompilar / ensamblarMaven, npm, javac
TestVerificar automáticamenteJUnit, pytest
PackageProducir un artefacto entregable.jar, imagen Docker
StagingDesplegar en preproducciónservidor de prueba
DeployPoner en producciónservidor / cloud

El principio del «fail fast»: se colocan las etapas rápidas y baratas (compilación, pruebas unitarias) primero. No sirve desplegar si el código ni siquiera compila.

🔧 Mini-ejercicio — ¿En qué orden colocar estos stages: Deploy, Build, Test, Checkout?

✅ Ver una solución

CheckoutBuildTestDeploy. Se recupera el código, se compila, se prueba, y solo se despliega si todo está verde.

↑ Volver arriba


5 — Un ejemplo concreto de extremo a extremo

Sigamos el recorrido de una sola línea de código corregida por una desarrolladora, Léa, en una aplicación web.

Desarrollo paso a paso:

  1. Léa corrige un bug y hace git push.
  2. Un webhook avisa al servidor CI/CD de que hay código nuevo.
  3. El pipeline compila, lanza las 124 pruebas (todas verdes) y empaqueta la versión v1.4.1.
  4. La versión se despliega automáticamente.
  5. Seis minutos después del push, la corrección está en línea — sin intervención manual.

Compara: antes del CI/CD, esa misma corrección habría pedido una puesta en producción planificada, un atardecer, a mano, con el estrés de «ojalá funcione». Aquí, es una rutina de 6 minutos.

🔧 Mini-ejercicio — En la etapa 3, 2 pruebas de 124 fallan. ¿Qué hace el pipeline, y la versión sale a producción?

✅ Ver una solución

El pipeline se detiene en el stage Test, notifica a Léa y no despliega. La producción se queda en la versión estable anterior. Es el principio «fail fast» que protege la prod.

↑ Volver arriba


6 — Las ventajas de la automatización
VentajaLo que cambia en concreto
Menos errores humanosLas tareas repetitivas están en scripts: se acaba el olvido de un paso
Feedback rápidoSe sabe en minutos si un cambio rompe algo
Despliegues frecuentesSe puede entregar varias veces al día con confianza
ReproducibilidadCada build es idéntico — se acabó el «funciona en mi máquina»
TrazabilidadCada cambio queda registrado: quién, qué, cuándo

Cuanto más a menudo se despliega, más pequeño es cada despliegue, y por tanto menos arriesgado. Es contraintuitivo: desplegar más a menudo hace los despliegues más seguros, no más peligrosos.

🔧 Mini-ejercicio — Cita dos razones por las que desplegar 10 veces al día pequeños cambios es menos arriesgado que un solo despliegue grande al mes.

✅ Ver una solución
  1. Cada despliegue contiene poco código → un bug es fácil de localizar. 2) El rollback es simple (pocos cambios que deshacer). El gran despliegue mensual concentra al contrario muchos riesgos de golpe.

↑ Volver arriba


7 — Quiz — Conceptos CI/CD

Question 1: ¿Qué significa «CI»?

a) Code Inspection

b) Continuous Integration

c) Container Initialization

d) Central Infrastructure

💡 Ver la solución

Respuesta: b)Continuous Integration: fusión y validación automáticas frecuentes del código.


Question 2: ¿Cuál es la diferencia entre Continuous Delivery y Continuous Deployment?

a) Ninguna, son sinónimos

b) En Delivery la puesta en prod es manual; en Deployment es automática

c) El Deployment no hace pruebas

d) La Delivery despliega automáticamente

💡 Ver la solución

Respuesta: b) — Los dos preparan una versión lista; solo la puesta en producción difiere (manual vs automática).


Question 3: ¿Qué ocurre si el stage Test falla en un pipeline?

a) El pipeline continúa de todos modos hasta producción

b) El pipeline se detiene y se notifica al equipo

c) El código se borra del repositorio

d) El pipeline vuelve a empezar en bucle infinito

💡 Ver la solución

Respuesta: b) — Principio «fail fast»: un fallo detiene el pipeline y dispara una alerta; nada sale a producción.


Question 4: ¿Qué es un artefacto en un pipeline?

a) Un bug introducido por error

b) El resultado empaquetado de un build (ej. un .jar, una imagen)

c) Un mensaje en los registros

d) Un usuario del sistema

💡 Ver la solución

Respuesta: b) — El artefacto es el entregable producido por el build, listo para desplegarse.


Question 5: ¿Por qué desplegar a menudo hace los despliegues más seguros?

a) Porque cada despliegue es más pequeño y por tanto más fácil de diagnosticar y anular

b) Porque se suprimen las pruebas

c) Porque los servidores se vuelven más potentes

d) Porque los usuarios no se dan cuenta

💡 Ver la solución

Respuesta: a) — Cambios pequeños y frecuentes reducen la superficie de riesgo y facilitan el rollback.

↑ Volver arriba


8 — Práctica — Diseñar tu primer pipeline

Consigna

Un equipo desarrolla una aplicación Java. Diseña (en papel / en pseudo-pipeline) los stages de un pipeline CI/CD para esta aplicación, indicando para cada stage: su nombre, su rol, y qué debe detener el pipeline. Precisa también si recomiendas Continuous Delivery o Continuous Deployment, y por qué.


Corrección propuesta

OrdenStageRolCondición de parada
1CheckoutRecuperar el código desde GitRepositorio inaccesible
2BuildCompilar con Maven (mvn package)Error de compilación
3TestLanzar las pruebas JUnitUna prueba falla
4PackageProducir el artefacto .jar / imagenFallo de empaquetado
5StagingDesplegar en preproducciónArranque de la aplicación KO
6DeployPoner en producciónValidación manual rechazada

Elección recomendada para empezar: Continuous Delivery.

Justificación: mientras la cobertura de pruebas no esté madura, se mantiene una validación humana antes de producción (Delivery). Cuando el equipo confía en sus pruebas automatizadas, puede pasar a Continuous Deployment (puesta en prod automática).

Esquema esperado:

↑ Volver arriba


9 — Síntesis

Puntos a recordar

  1. CI/CD = la automatización del camino del código a la producción, corazón técnico de DevOps.
  2. CI: fusionar y probar a menudo y automáticamente.
  3. CD: Delivery (listo para desplegar, botón manual) vs Deployment (puesta en prod automática).
  4. El pipeline encadena stages; un fallo detiene todo (fail fast).
  5. Desplegar a menudo y en pequeño = menos riesgo, feedback rápido, rollback fácil.

A continuación

Lección 04 — Estrategias de despliegue: cómo pasar de la v1 a la v2 en producción sin romper el servicio (Blue/Green, Canary, Rolling…).

↑ Volver arriba


Todos los derechos reservados. Toda reproducción, difusión, uso o adaptación de este curso, en todo o en parte, está estrictamente prohibida sin la autorización escrita previa del Dr. Haythem REHOUMA.

Curso creado por Dr. Haythem REHOUMA — Desarrollo y despliegue de soluciones de datos