Testar grátis
6 min leitura Guide 626 of 877

Melhores Práticas CI/CD

Integração Contínua e Deployment Contínuo transformam como equipes entregam software automatizando builds, testes e deployments. GitScrum integra com pipelines CI/CD para fornecer visibilidade no status de deployment, conectar releases ao progresso do projeto e garantir coordenação da equipe em torno de processos de entrega automatizados.

Fundamentos do Pipeline

Estágios de Pipeline CI/CD

FLUXO PADRÃO DE PIPELINE:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  ┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐  ┌──────┐ │
│  │ Commit │→ │ Build  │→ │ Test   │→ │ Deploy │→ │Verify│ │
│  └────────┘  └────────┘  └────────┘  └────────┘  └──────┘ │
│       │          │           │           │          │      │
│       ↓          ↓           ↓           ↓          ↓      │
│   Push para   Compilar     Unit +      Staging    Smoke    │
│   branch      & Pacotar   Integração  ou Prod   Tests     │
│                                                            │
│  INTEGRAÇÃO GITSCRUM:                                      │
│  • Tarefa atualizada para "Building"                       │
│  • Resultados de teste linkados à tarefa                   │
│  • Status de deployment rastreado                          │
│  • Release notes auto-gerados                              │
└─────────────────────────────────────────────────────────────┘

Configuração de Pipeline

CONFIGURAÇÃO RECOMENDADA DE PIPELINE:
┌─────────────────────────────────────────────────────────────┐
│ ESTÁGIO        │ TIMEOUT │ EM FALHA                         │
├────────────────┼─────────┼──────────────────────────────────┤
│ Lint/Format    │ 2 min   │ Bloquear merge                   │
│ Testes Unitários│ 10 min │ Bloquear merge                   │
│ Build          │ 5 min   │ Bloquear merge                   │
│ Integração     │ 15 min  │ Bloquear merge                   │
│ Scan Segurança │ 10 min  │ Avisar (bloquear em crítico)     │
│ Deploy Staging │ 10 min  │ Parar pipeline                   │
│ Testes E2E     │ 20 min  │ Parar pipeline                   │
│ Deploy Prod    │ 10 min  │ Alertar + rollback              │
└─────────────────────────────────────────────────────────────┘

Automação de Testes

Pirâmide de Testes

ESTRATÉGIA DE TESTES:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│                    ╱╲                                       │
│                   ╱  ╲                                      │
│                  ╱ E2E╲    Poucos, lentos, caros            │
│                 ╱──────╲   (5-10% dos testes)               │
│                ╱        ╲                                   │
│               ╱Integração╲  Alguns, velocidade média        │
│              ╱────────────╲ (15-25% dos testes)             │
│             ╱              ╲                                │
│            ╱  Testes Unit  ╲  Muitos, rápidos, baratos      │
│           ╱──────────────────╲ (65-80% dos testes)          │
│                                                             │
│ METAS DE TEMPO DE EXECUÇÃO:                                 │
│ • Testes unitários: < 2 minutos                             │
│ • Integração: < 10 minutos                                  │
│ • E2E: < 20 minutos                                         │
│ • Pipeline completo: < 30 minutos                           │
└─────────────────────────────────────────────────────────────┘

Lidando com Testes Instáveis

GERENCIAMENTO DE TESTES INSTÁVEIS:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ DETECÇÃO:                                                   │
│ • Rastreie taxas de aprovação/falha de testes ao longo do tempo │
│ • Identifique testes que falham intermitentemente          │
│ • Defina threshold (ex.: <95% taxa aprovação = instável)   │
│                                                             │
│ PROCESSO DE QUARENTENA:                                     │
│ 1. Marque teste como instável no GitScrum                  │
│ 2. Mova para suite de testes separada                       │
│ 3. Não bloqueie deployments em testes instáveis            │
│ 4. Conserte ou remova dentro de 2 semanas                  │
│                                                             │
│ PREVENÇÃO:                                                  │
│ • Evite testes dependentes de tempo                         │
│ • Use dados de teste determinísticos                        │
│ • Isole testes de serviços externos                         │
│ • Revise design de teste em code reviews                    │
└─────────────────────────────────────────────────────────────┘

Estratégias de Deployment

Deployment Progressivo

OPÇÕES DE DEPLOYMENT:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ DEPLOYMENT ROLLING:                                         │
│ [■■■■■□□□□□] → [■■■■■■■□□□] → [■■■■■■■■■■]                 │
│  Versão antiga   Rollout      Versão nova                   │
│                   gradual                                     │
│                                                             │
│ BLUE-GREEN:                                                 │
│ Blue (live) ────────────┬───→ Blue (standby)               │
│ Green (standby) ────────┴───→ Green (live)                 │
│         Troca instantânea, rollback fácil                   │
│                                                             │
│ CANARY:                                                     │
│ [■■■■■■■■■□] → [■■■■■■■□□□] → [■■■■■□□□□□]                 │
│  1% tráfego     10% tráfego    50% tráfego                  │
│         Aumento gradual baseado em métricas                 │
└─────────────────────────────────────────────────────────────┘

Feature Flags

FLUXO DE FEATURE FLAG:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ 1. DESENVOLVER:                                             │
│    if (featureFlags.isEnabled('new-checkout')) {           │
│      return newCheckout();                                 │
│    }                                                        │
│    return oldCheckout();                                   │
│                                                             │
│ 2. DEPLOY (flag off):                                       │
│    Código vai para produção, feature escondida              │
│                                                             │
│ 3. ROLLOUT:                                                 │
│    • Habilitar para usuários internos                       │
│    • Habilitar para usuários beta (10%)                     │
│    • Habilitar para todos usuários (100%)                   │
│                                                             │
│ 4. LIMPEZA:                                                 │
│    Remover flag e código antigo após estável                │
│                                                             │
│ Rastreie status de flag no GitScrum:                        │
│ • Link tarefas de feature para flags                        │
│ • Rastreie progresso de rollout                             │
│ • Documente tarefas de limpeza                              │
└─────────────────────────────────────────────────────────────┘

Integração GitScrum

Visibilidade de Status do Pipeline

DASHBOARD CI/CD GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│ DEPLOYMENTS RECENTES                                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ✅ v2.4.1 → Produção     2 min atrás   [Ver Release]        │
│    └── Tarefas: #234, #256, #267                           │
│                                                             │
│ ✅ v2.4.1 → Staging      45 min atrás  [Ver Release]        │
│    └── Todos testes passaram (234/234)                     │
│                                                             │
│ ❌ v2.4.0 → Staging      2 hrs atrás   [Ver Logs]           │
│    └── Testes de integração falharam                       │
│                                                             │
│ SAÚDE DO PIPELINE:                                          │
│ Hoje: 12 builds, 10 passaram (83%)                         │
│ Tempo médio de build: 8m 32s                               │
└─────────────────────────────────────────────────────────────┘

Atualizações Automáticas de Tarefa

AUTOMAÇÃO CI/CD → GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│ EVENTO DE PIPELINE      │ AÇÃO GITSCRUM                     │
├─────────────────────────┼───────────────────────────────────┤
│ PR aberto               │ Criar/link tarefa se necessário   │
│ Build iniciado          │ Atualizar tarefa para "Building"  │
│ Testes passaram         │ Adicionar label "tests-passing"   │
│ Testes falharam         │ Adicionar label "tests-failing"   │
│ Deployed para staging   │ Atualizar tarefa para "In Staging"│
│ Deployed para produção  │ Atualizar tarefa para "Released"  │
│ Deployment falhou       │ Alertar equipe, adicionar blocker │
└─────────────────────────────────────────────────────────────┘

Soluções Relacionadas