Probar gratis
8 min lectura Guide 622 of 877

Mejores Prácticas de CI/CD

La Integración Continua y el Despliegue Continuo transforman cómo los equipos entregan software automatizando builds, tests y despliegues. GitScrum se integra con pipelines CI/CD para proporcionar visibilidad del estado de despliegue, conectar releases con el progreso del proyecto y asegurar la coordinación del equipo alrededor de procesos de entrega automatizada.

Fundamentos del Pipeline

Etapas del Pipeline CI/CD

FLUJO ESTÁNDAR DE PIPELINE:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  ┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐  ┌──────┐ │
│  │ Commit │→ │ Build  │→ │ Test   │→ │ Deploy │→ │Verify│ │
│  └────────┘  └────────┘  └────────┘  └────────┘  └──────┘ │
│       │          │           │           │          │      │
│       ↓          ↓           ↓           ↓          ↓      │
│   Push a     Compilar    Unitarios  Staging     Smoke     │
│   branch     & Empacar   + Integr.   o Prod    Tests      │
│                                                            │
│  INTEGRACIÓN GITSCRUM:                                     │
│  • Tarea actualizada a "Building"                          │
│  • Resultados de test vinculados a tarea                   │
│  • Estado de deployment rastreado                          │
│  • Release notes auto-generadas                            │
└─────────────────────────────────────────────────────────────┘

Configuración del Pipeline

CONFIGURACIÓN RECOMENDADA DE PIPELINE:
┌─────────────────────────────────────────────────────────────┐
│ ETAPA           │ TIMEOUT │ EN FALLA                        │
├─────────────────┼─────────┼─────────────────────────────────┤
│ Lint/Format     │ 2 min   │ Bloquear merge                  │
│ Tests Unitarios │ 10 min  │ Bloquear merge                  │
│ Build           │ 5 min   │ Bloquear merge                  │
│ Integración     │ 15 min  │ Bloquear merge                  │
│ Security Scan   │ 10 min  │ Warn (bloquear en crítico)      │
│ Deploy Staging  │ 10 min  │ Detener pipeline                │
│ Tests E2E       │ 20 min  │ Detener pipeline                │
│ Deploy Prod     │ 10 min  │ Alerta + rollback              │
└─────────────────────────────────────────────────────────────┘

Automatización de Tests

Pirámide de Testing

ESTRATEGIA 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                           │
└─────────────────────────────────────────────────────────────┘

Gestión de Tests Flaky

GESTIÓN DE TESTS INESTABLES:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ DETECCIÓN:                                                  │
│ • Rastrear tasas de pass/fail en el tiempo                  │
│ • Identificar tests que fallan intermitentemente            │
│ • Establecer umbral (ej., <95% pass rate = flaky)          │
│                                                             │
│ PROCESO DE CUARENTENA:                                      │
│ 1. Marcar test como flaky en GitScrum                      │
│ 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                   │
└─────────────────────────────────────────────────────────────┘

Estrategias de Despliegue

Despliegue Progresivo

OPCIONES DE DESPLIEGUE:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ 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:                                              │
│ • Deploy código, activar para usuarios específicos          │
│ • Rollback instantáneo sin redeploy                         │
│ • Testing seguro en producción                              │
│ • A/B testing integrado                                     │
└─────────────────────────────────────────────────────────────┘

Control de Ambiente

GESTIÓN DE AMBIENTES:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ AMBIENTE      │ PROPÓSITO           │ DEPLOY AUTOMÁTICO    │
├───────────────┼─────────────────────┼──────────────────────┤
│ Development   │ Testing de devs     │ En cada commit       │
│ Staging       │ QA y validación     │ En merge a develop   │
│ Pre-prod      │ Validación final    │ Manual trigger       │
│ Production    │ Usuarios reales     │ Después de staging   │
└───────────────────────────────────────────────────────────────┘

FLUJO DE PROMOCIÓN:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│   Dev → Staging → Pre-prod → Production                     │
│    │       │          │          │                          │
│    ↓       ↓          ↓          ↓                          │
│  Tests   Tests      Tests     Smoke                         │
│  Unit    E2E        Load      Tests                         │
│                                                             │
│ GATES ENTRE AMBIENTES:                                      │
│ • Tests deben pasar                                         │
│ • Métricas de performance OK                                │
│ • Aprobaciones requeridas (prod)                            │
│ • Ventana de deployment apropiada                           │
└─────────────────────────────────────────────────────────────┘

Coordinación con GitScrum

Visibilidad del Pipeline

INTEGRACIÓN GITSCRUM + CI/CD:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ TARJETA DE TAREA EN GITSCRUM:                               │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ [FEAT-123] Implementar login OAuth                      ││
│ │                                                         ││
│ │ Estado: En Revisión                                     ││
│ │ PR: #456 (approved)                                     ││
│ │                                                         ││
│ │ PIPELINE:                                               ││
│ │ ├── Build: ✅ Passed (2m 15s)                          ││
│ │ ├── Tests: ✅ Passed (8m 42s)                          ││
│ │ ├── Security: ✅ Passed (1m 30s)                       ││
│ │ └── Deploy Staging: ✅ Deployed                        ││
│ │                                                         ││
│ │ AMBIENTES:                                              ││
│ │ • Staging: v1.2.3-feat123 ✅                           ││
│ │ • Prod: v1.2.2 (pendiente)                             ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ BENEFICIOS:                                                 │
│ • Todo el equipo ve el estado de CI                         │
│ • PM sabe cuándo feature está deployada                     │
│ • QA sabe cuándo puede testear en staging                   │
│ • Stakeholders ven progreso real                            │
└─────────────────────────────────────────────────────────────┘

Release Management

GESTIÓN DE RELEASES CON GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ RELEASE v2.1.0                                              │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ FEATURES INCLUIDAS:                                     ││
│ │ ✅ [FEAT-120] Login con Google                         ││
│ │ ✅ [FEAT-125] Dashboard analytics                      ││
│ │ ✅ [FEAT-130] Export PDF                               ││
│ │                                                         ││
│ │ BUGS ARREGLADOS:                                        ││
│ │ ✅ [BUG-45] Crash en Safari                            ││
│ │ ✅ [BUG-48] Fecha incorrecta en reportes               ││
│ │                                                         ││
│ │ ESTADO DEL PIPELINE:                                    ││
│ │ • Build: ✅  Tests: ✅  Security: ✅                   ││
│ │ • Staging: ✅ deployed  Prod: ⏳ scheduled 3pm         ││
│ │                                                         ││
│ │ RELEASE NOTES: Auto-generadas de tareas completadas    ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

Métricas y Monitoreo

KPIs de CI/CD

MÉTRICAS A RASTREAR:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ VELOCIDAD:                                                  │
│ • Lead Time: tiempo de commit a producción                  │
│ • Cycle Time: tiempo de inicio trabajo a producción         │
│ • Deploy Frequency: deploys por día/semana                  │
│                                                             │
│ ESTABILIDAD:                                                │
│ • Change Failure Rate: % deploys que causan fallas         │
│ • MTTR: tiempo medio para recuperar de fallas              │
│ • Pipeline Success Rate: % pipelines exitosos              │
│                                                             │
│ CALIDAD:                                                    │
│ • Test Coverage: % código cubierto por tests               │
│ • Flaky Test Rate: % tests inestables                      │
│ • Security Issues: vulnerabilidades detectadas             │
│                                                             │
│ OBJETIVOS DORA:                                             │
│ ┌───────────────────────────────────────────────────────┐  │
│ │ MÉTRICA              │ ELITE  │ HIGH   │ TU EQUIPO    │  │
│ ├──────────────────────┼────────┼────────┼──────────────┤  │
│ │ Deploy Frequency     │ Daily  │ Weekly │ _______      │  │
│ │ Lead Time            │ <1 day │ <1 week│ _______      │  │
│ │ Change Failure Rate  │ 0-15%  │ 16-30% │ _______      │  │
│ │ MTTR                 │ <1 hour│ <1 day │ _______      │  │
│ └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Soluciones Relacionadas