Saltar al contenido

Guía

Integración y entrega continuas (CI/CD)

Un pipeline de CI/CD no es un lujo de equipos grandes: es lo que convierte «esperemos que funcione» en «lo sabemos antes de fusionar».

Última actualización:

Ilustración abstracta de una tubería de integración continua con etapas y un despliegue

CI (integración continua) es comprobar de forma automática cada cambio antes de integrarlo. CD (entrega o despliegue continuos) es llevar ese cambio a un entorno real sin pasos manuales. La mayoría de equipos gana más con una buena CI que con cualquier otra inversión técnica del mismo coste.

Qué comprueba la CI, y en qué orden

  1. Lo más rápido primero: formato y *lint*. Falla en segundos y evita ruido en la revisión.
  2. Compilación / *type-check*: si no compila, nada más importa.
  3. Tests unitarios: el grueso de la confianza, deberían tardar pocos minutos.
  4. Tests de integración y *end-to-end*: más lentos y más frágiles; van al final y en paralelo.
  5. Build del artefacto de producción: si se prerenderiza o empaqueta, que falle aquí y no en el servidor.

Los tiempos importan más de lo que parece

Si el pipeline tarda 25 minutos, la gente deja de esperarlo: fusiona antes de que termine, acumula cambios y pierde la relación causa-efecto entre un *commit* y su fallo. El objetivo razonable es tener una respuesta de CI en menos de diez minutos. Se consigue con caché de dependencias, paralelización y no repetir trabajo entre etapas.

Gates antes de producción

Entre «la CI pasa» y «está en producción» conviene poner comprobaciones que no son código: revisión aprobada, migraciones de base de datos revisadas aparte, y una forma de volver atrás en un minuto. El despliegue debería ser aburrido; si genera adrenalina, falta automatización.

  • Despliegue reproducible: el mismo artefacto que se probó es el que se publica.
  • Vuelta atrás rápida: relanzar la versión anterior no puede depender de reconstruir nada.
  • Salud tras el despliegue: una comprobación automática de que el servicio responde antes de dar por buena la publicación.

Entornos

Como mínimo, un entorno de integración que se parezca a producción (mismos servicios, datos anonimizados) donde probar antes de publicar. Muchos equipos se ahorran incidencias solo por tener ese entorno y usarlo de verdad.

Preguntas frecuentes

Lo que suelen preguntarnos

¿Necesito CD si ya tengo CI?

No es obligatorio, pero el despliegue manual es una fuente recurrente de errores y de dependencia de una persona. Automatizarlo suele salir a cuenta en pocas semanas.

¿Cuánto debería tardar el pipeline?

Idealmente menos de diez minutos para la respuesta que bloquea una fusión. Los tests más lentos pueden ejecutarse en paralelo o después, sin bloquear.

¿GitHub Actions, GitLab CI, Jenkins...?

Para la mayoría de proyectos, la CI integrada en tu plataforma de código (Actions o GitLab CI) es suficiente y más barata de mantener. Jenkins tiene sentido en organizaciones con necesidades muy específicas de infraestructura.

¿Y si no tenemos tests?

Se empieza por la CI que sí se puede tener hoy (lint, build, type-check) y por cubrir con tests la parte del código que más cambia o más incidencias genera. No hace falta el 100 % para obtener valor.

Siguiente paso

Media hora bien invertida

Cuéntanos el problema en una llamada corta. Salimos con una primera orientación de por dónde iría y qué implicaría, sin compromiso y sin presentación comercial.