Testar grátis
5 min leitura Guide 628 of 877

Melhores Práticas de Pipeline CI/CD

Pipelines CI/CD bem projetados aceleram a entrega sem sacrificar qualidade capturando problemas no estágio mais cedo possível. A integração do GitScrum com ferramentas de pipeline fornece visibilidade no status de build, resultados de teste e progresso de implantação, ajudando equipes a coordenar em torno de seus processos de entrega automatizados.

Princípios de Design de Pipeline

Velocidade vs Minúcia

OTIMIZAÇÃO DE ESTÁGIO DE PIPELINE:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ FEEDBACK RÁPIDO PRIMEIRO:                                   │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐   │
│ │ Lint   │→│ Unit   │→│ Build  │→│ Int.   │→│ E2E    │   │
│ │ (30s)  │ │ (2m)   │ │ (3m)   │ │ (10m)  │ │ (20m)  │   │
│ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘   │
│     ↓          ↓          ↓          ↓          ↓         │
│   Falha     Falha      Falha      Falha      Falha        │
│   rápido    rápido     médio      mais      mais lento    │
│                              lento                         │
│                                                            │
│ PRINCÍPIO: Capturar problemas baratos antes de verificações│
│ caras                                                        │
└─────────────────────────────────────────────────────────────┘

Execução Paralela

ESTRATÉGIA DE PARALELIZAÇÃO:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ SEQUENCIAL (lento):        PARALELO (rápido):               │
│                                                             │
│ Lint ──→ Unit ──→ Build    ┌── Lint ──┐                    │
│      5m      3m            │           │                    │
│                            ├── Unit ──┼── Build ──→        │
│ Total: 8 minutos           │   2m      │    3m             │
│                            └── Type ──┘                     │
│                               Check                         │
│                            Total: 5 minutos                 │
│                                                             │
│ CANDIDATOS A PARALELO:                                     │
│ • Linting + Verificação de tipo + Varredura de segurança   │
│ • Testes unitários entre módulos                           │
│ • Testes de integração por serviço                         │
│ • Testes E2E por área de funcionalidade                    │
└─────────────────────────────────────────────────────────────┘

Confiabilidade de Pipeline

Tratando Falhas

PADRÕES DE TRATAMENTO DE FALHAS:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ FALHAR RÁPIDO:                                             │
│ • Parar pipeline na primeira falha                          │
│ • Não desperdiçar recursos em builds condenados             │
│ • Fornecer feedback imediato aos desenvolvedores           │
│                                                             │
│ REPETIR FALHAS TRANSITÓRIAS:                               │
│ • Timeouts de rede: repetir 2-3 vezes                       │
│ • Falhas de serviço externo: repetir com backoff            │
│ • Não repetir falhas determinísticos                        │
│                                                             │
│ DEGRADAÇÃO GRACIOSA:                                       │
│ • Verificações não críticas podem alertar vs bloquear      │
│ • Builds de documentação não bloqueiam releases de código  │
│ • Testes de performance podem ser consultivos              │
└─────────────────────────────────────────────────────────────┘

Estratégias de Cache

CACHE EFETIVO:
┌─────────────────────────────────────────────────────────────┐
│ TIPO DE CACHE     │ BENEFÍCIO          │ INVALIDAÇÃO        │
├───────────────────┼────────────────────┼────────────────────┤
│ Dependências      │ Pular npm/pip      │ mudança de lockfile │
│                   │ install            │                     │
│ Artefatos de build│ Builds incrementais│ mudança de fonte   │
│ Camadas Docker    │ Builds de imagem   │ mudança de         │
│                   │ mais rápidos       │ Dockerfile          │
│ Fixtures de teste │ Setup de teste     │ mudança de fixture │
│                   │ mais rápido        │                     │
└───────────────────┴────────────────────┴────────────────────┘

MELHORES PRÁTICAS DE CACHE:
• Usar chaves endereçáveis por conteúdo (hash de entradas)
• Definir TTLs apropriados (1 semana para deps)
• Monitorar taxas de acerto de cache
• Limpar caches em falhas estranhas

Monitoramento e Observabilidade

Métricas de Pipeline

MÉTRICAS-CHAVE DE PIPELINE:
┌─────────────────────────────────────────────────────────────┐
│ MÉTRICA             │ META        │ AÇÃO SE PERDIDA         │
├─────────────────────┼─────────────┼─────────────────────────┤
│ Tempo de build      │ < 15 min    │ Otimizar estágios lentos │
│ Taxa de sucesso     │ > 90%       │ Corrigir testes instáveis│
│ Tempo de fila       │ < 5 min     │ Adicionar mais runners   │
│ Tempo de recuperação│ < 30 min    │ Melhorar rollback       │
│ Frequência de deploy│ Diário+     │ Reduzir tamanho de lote │
└─────────────────────────────────────────────────────────────┘

Alertas

ALERTAS DE PIPELINE:
┌─────────────────────────────────────────────────────────────┐
│ CONDIÇÃO                   │ ALERTAR PARA                    │
├────────────────────────────┼─────────────────────────────────┤
│ Branch principal quebrado  │ Canal da equipe (alta prioridade)│
│ Tempo de build > 2x normal │ Equipe de plataforma           │
│ Taxa de sucesso cai 20%+   │ Tech lead + plataforma         │
│ Deploy de produção falhou  │ On-call + tech lead            │
│ Varredura de segurança     │ Equipe de segurança + tech lead│
│ crítica                    │                                 │
└─────────────────────────────────────────────────────────────┘

Integração GitScrum

Sincronização de Status

VISÃO DE PIPELINE GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│ Tarefa #234: Implementar autenticação de usuário           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ PIPELINES LINKADOS:                                         │
│                                                             │
│ Branch: feature/user-auth                                   │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐           │
│ │ ✅ Lint │ │ ✅ Test │ │ ✅ Build│ │ ⏳ Deploy│           │
│ │  32s    │ │  2m 14s │ │  3m 01s │ │  running│           │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘           │
│                                                             │
│ Última execução: 5 minutos atrás                            │
│ Cobertura: 87% (+2%)                                        │
│ [Ver Pipeline Completo] [Re-executar] [Ver Logs]           │
└─────────────────────────────────────────────────────────────┘

Soluções Relacionadas