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