Probar gratis
7 min lectura Guide 422 of 877

Mejores Prácticas de Pipeline CI/CD

Los pipelines CI/CD automatizan el camino desde el código hasta producción. Buenos pipelines son rápidos, confiables y detectan problemas temprano. Malos pipelines son lentos, inestables y crean miedo al despliegue. Esta guía cubre la construcción de pipelines efectivos.

Etapas del Pipeline

EtapaPropósitoVelocidad
BuildCompilar código< 2 min
TestVerificar corrección< 5 min
SeguridadEncontrar vulnerabilidades< 3 min
DeployEnviar a ambiente< 5 min

Diseño del Pipeline

Etapas Esenciales

DISEÑO DE PIPELINE CI/CD
════════════════════════

PIPELINE BÁSICO:
─────────────────────────────────────
build → test → deploy

Inicio simple

PIPELINE COMPLETO:
─────────────────────────────────────
┌─────────────────────────────────────┐
│              CI                      │
├─────────────────────────────────────┤
│ checkout → build → lint → test      │
│     │                    │          │
│     └── security scan ───┘          │
└─────────────┬───────────────────────┘
              │
              ▼ artefacto
┌─────────────────────────────────────┐
│              CD                      │
├─────────────────────────────────────┤
│ deploy staging → smoke → aprobar    │
│          │                 │        │
│          ▼                 ▼        │
│   tests integración   deploy prod   │
│                            │        │
│                     smoke tests     │
└─────────────────────────────────────┘

DETALLES DE ETAPAS:
─────────────────────────────────────
Build:
├── Compilar/transpilar código
├── Instalar dependencias
├── Crear artefacto de build
└── Rápido, paralelizable

Lint:
├── Verificación de estilo de código
├── Análisis estático
├── Verificación de formato
└── Detectar problemas temprano

Test:
├── Tests unitarios
├── Tests de integración
├── Tests E2E (si son rápidos)
└── Confianza en la corrección

Seguridad:
├── Escaneo de dependencias
├── SAST (análisis estático)
├── Detección de secretos
└── Gates de seguridad

Optimización del Pipeline

Haciéndolo Rápido

OPTIMIZACIÓN DE PIPELINE
═════════════════════════

PARALELIZACIÓN:
─────────────────────────────────────
Ejecutar jobs independientes en paralelo:

        ┌── lint
build ──┼── tests unitarios ──► deploy
        └── security scan

En lugar de:
build → lint → tests → security → deploy

CACHÉ:
─────────────────────────────────────
Cachear:
├── Dependencias (node_modules, etc.)
├── Artefactos de build
├── Capas Docker
├── Fixtures de test
├── Ahorro enorme de tiempo
└── Cachear agresivamente

FEEDBACK RÁPIDO:
─────────────────────────────────────
Ordenar por velocidad e importancia:
├── Lint primero (rápido, detecta problemas comunes)
├── Tests unitarios después (rápido, alto valor)
├── Tests de integración (más lento)
├── Tests E2E (más lento aún)
├── Fallar rápido
└── Optimizar el cuello de botella

Estrategias de Testing

PIRÁMIDE DE TESTING:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│                    ╱╲                                       │
│                   ╱  ╲                                      │
│                  ╱ E2E╲    Pocos, lentos, costosos          │
│                 ╱──────╲   (5-10% de tests)                 │
│                ╱        ╲                                   │
│               ╱Integración╲  Algunos, velocidad media       │
│              ╱────────────╲ (15-25% de tests)               │
│             ╱              ╲                                │
│            ╱ Tests Unitarios╲  Muchos, rápidos, baratos     │
│           ╱──────────────────╲ (65-80% de tests)            │
│                                                             │
│ TIEMPOS OBJETIVO DE EJECUCIÓN:                              │
│ • Tests unitarios: < 2 minutos                              │
│ • Integración: < 10 minutos                                 │
│ • E2E: < 20 minutos                                         │
│ • Pipeline completo: < 30 minutos                           │
└─────────────────────────────────────────────────────────────┘

Estrategias de Deployment

Deployment Progresivo

OPCIONES DE DEPLOYMENT:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ ROLLING DEPLOYMENT:                                         │
│ [■■■■■□□□□□] → [■■■■■■■□□□] → [■■■■■■■■■■]                 │
│  Versión vieja    Rollout        Nueva versión              │
│                   gradual                                   │
│                                                             │
│ BLUE-GREEN:                                                 │
│ Blue (live) ────────────┬───→ Blue (standby)               │
│ Green (standby) ────────┴───→ Green (live)                 │
│         Cambio instantáneo, rollback fácil                  │
│                                                             │
│ CANARY:                                                     │
│ [■■■■■■■■■□] → [■■■■■■■□□□] → [■■■■■□□□□□]                 │
│   1% usuarios    10% usuarios   100% usuarios               │
│                                                             │
│ FEATURE FLAGS:                                              │
│ • Desplegar código, activar para usuarios                   │
│ • Rollback instantáneo sin redeploy                         │
│ • Testing en producción seguro                              │
│ • A/B testing integrado                                     │
└─────────────────────────────────────────────────────────────┘

Configuración de Gates

QUALITY GATES:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ GATE DE PR:                                                 │
│ ├── Todos los tests pasan                                   │
│ ├── Cobertura > 80%                                         │
│ ├── Sin issues de seguridad críticos                        │
│ ├── Code review aprobado                                    │
│ └── Lint sin errores                                        │
│                                                             │
│ GATE DE STAGING:                                            │
│ ├── Deploy exitoso                                          │
│ ├── Smoke tests pasan                                       │
│ ├── Tests de integración pasan                              │
│ └── Performance dentro de límites                           │
│                                                             │
│ GATE DE PRODUCCIÓN:                                         │
│ ├── Staging validado                                        │
│ ├── Aprobación manual (opcional)                            │
│ ├── Ventana de deployment apropiada                         │
│ └── Rollback plan definido                                  │
│                                                             │
│ POST-DEPLOY:                                                │
│ ├── Smoke tests de producción                               │
│ ├── Monitoreo de errores                                    │
│ ├── Alertas configuradas                                    │
│ └── Rollback automático si falla                            │
└─────────────────────────────────────────────────────────────┘

Manejando Tests Inestables

Proceso de Cuarentena

GESTIÓN DE TESTS FLAKY:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ DETECCIÓN:                                                  │
│ • Rastrear tasa pass/fail por test                          │
│ • Identificar tests que fallan intermitentemente            │
│ • Threshold: <95% pass rate = flaky                         │
│                                                             │
│ PROCESO DE CUARENTENA:                                      │
│ 1. Marcar test como flaky en sistema                       │
│ 2. Mover a suite de test separada                          │
│ 3. No bloquear deployments por tests flaky                 │
│ 4. Arreglar o eliminar dentro de 2 semanas                 │
│                                                             │
│ PREVENCIÓN:                                                 │
│ • Evitar tests dependientes del tiempo                      │
│ • Usar datos de test determinísticos                        │
│ • Aislar tests de servicios externos                        │
│ • Revisar diseño de tests en code reviews                   │
│                                                             │
│ MÉTRICAS A MONITOREAR:                                      │
│ • % de tests flaky                                          │
│ • Tiempo promedio para arreglar flaky                       │
│ • Impacto en tiempo de pipeline                             │
└─────────────────────────────────────────────────────────────┘

Monitoreo del Pipeline

Métricas Clave

MÉTRICAS DE PIPELINE:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ VELOCIDAD:                                                  │
│ • Tiempo promedio de pipeline                               │
│ • Tiempo por etapa                                          │
│ • Tiempo de cola                                            │
│                                                             │
│ CONFIABILIDAD:                                              │
│ • Tasa de éxito de pipeline                                 │
│ • Tasa de tests flaky                                       │
│ • Frecuencia de rollbacks                                   │
│                                                             │
│ THROUGHPUT:                                                 │
│ • Deploys por día/semana                                    │
│ • Lead time (commit → producción)                           │
│ • Frecuencia de deployment                                  │
│                                                             │
│ DASHBOARD EJEMPLO:                                          │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ PIPELINE HEALTH                                         ││
│ │                                                         ││
│ │ Tiempo: 12 min avg   │  Éxito: 94%                     ││
│ │ Deploys: 8/día       │  Flaky: 2%                      ││
│ │                                                         ││
│ │ ETAPAS MÁS LENTAS:                                      ││
│ │ 1. Tests E2E - 6 min                                    ││
│ │ 2. Build - 3 min                                        ││
│ │ 3. Tests integración - 2 min                            ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

Integración con GitScrum

Visibilidad del Pipeline

GITSCRUM + CI/CD:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ CONEXIÓN AUTOMÁTICA:                                        │
│ • Estado de build visible en tarjetas de tarea              │
│ • Historial de deploys por feature                          │
│ • Links directos a logs de pipeline                         │
│ • Notificaciones de fallas                                  │
│                                                             │
│ FLUJO DE TRABAJO:                                           │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │  [Tarea] ──► [PR] ──► [CI] ──► [Merge] ──► [Deploy]   ││
│ │     │         │        │          │           │        ││
│ │     └─────────┴────────┴──────────┴───────────┘        ││
│ │              Todo visible en GitScrum                   ││
│ │                                                         ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ RELEASE NOTES AUTOMÁTICAS:                                  │
│ • Genera changelog de tareas completadas                    │
│ • Lista features incluidas en release                       │
│ • Documenta bugs arreglados                                 │
│ • Comparte con stakeholders                                 │
└─────────────────────────────────────────────────────────────┘

Soluciones Relacionadas