Testar grátis
6 min leitura Guide 425 of 877

Melhores Práticas de Pipeline CI/CD

Pipelines CI/CD automatizam o caminho do código para produção. Bons pipelines são rápidos, confiáveis e capturam problemas cedo. Maus pipelines são lentos, instáveis e criam medo de deployment. Este guia cobre construir pipelines efetivos.

Estágios do Pipeline

EstágioPropósitoVelocidade
BuildCompilar código< 2 min
TestVerificar correção< 5 min
SecurityEncontrar vulnerabilidades< 3 min
DeployEnviar para ambiente< 5 min

Design do Pipeline

Estágios Essenciais

DESIGN DE PIPELINE CI/CD
════════════════════════

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

Começo simples

PIPELINE ABRANGENTE:
─────────────────────────────────────
┌─────────────────────────────────────┐
│              CI                      │
├─────────────────────────────────────┤
│ checkout → build → lint → test      │
│     │                    │          │
│     └── security scan ───┘          │
└─────────────┬───────────────────────┘
              │
              ▼ artefato
┌─────────────────────────────────────┐
│              CD                      │
├─────────────────────────────────────┤
│ deploy staging → smoke → approve    │
│          │                 │        │
│          ▼                 ▼        │
│   testes integração   deploy prod   │
│                            │        │
│                     testes smoke    │
└─────────────────────────────────────┘

DETALHES DO ESTÁGIO:
─────────────────────────────────────
Build:
├── Compilar/transpilar código
├── Instalar dependências
├── Criar artefato de build
└── Rápido, paralelizável

Lint:
├── Verificações de estilo de código
├── Análise estática
├── Verificação de formato
└── Capturar problemas cedo

Test:
├── Testes unitários
├── Testes de integração
├── Testes E2E (se rápidos)
└── Confiança na correção

Security:
├── Scan de dependências
├── SAST (análise estática)
├── Detecção de segredos
└── Gates de segurança

Otimização do Pipeline

Tornando Rápido

OTIMIZAÇÃO DE PIPELINE
══════════════════════

PARALELIZAÇÃO:
─────────────────────────────────────
Execute jobs independentes em paralelo:

        ┌── lint
build ──┼── testes unitários ──► deploy
        └── scan de segurança

Em vez de:
build → lint → testes → segurança → deploy

CACHE:
─────────────────────────────────────
Cache:
├── Dependências (node_modules, etc.)
├── Artefatos de build
├── Camadas Docker
├── Fixtures de teste
├── Economias enormes de tempo
└── Cache agressivamente

FEEDBACK RÁPIDO:
─────────────────────────────────────
Ordene por velocidade e importância:
├── Lint primeiro (rápido, captura problemas comuns)
├── Testes unitários próximos (rápidos, alto valor)
├── Testes de integração (mais lentos)
├── Testes E2E (mais lentos)
├── Falhar rápido
└── Loop de feedback rápido

PIPELINES DIVIDIDOS:
─────────────────────────────────────
Pipeline PR (rápido):
├── Build
├── Lint
├── Testes unitários
├── Segurança básica
└── Feedback rápido

Branch principal (abrangente):
├── Suite completa de testes
├── Segurança completa
├── Deploy para staging
├── Testes de integração
└── Verificação completa

Confiabilidade

Pipelines Estáveis

CONFIABILIDADE DE PIPELINE
══════════════════════════

TESTES INSTÁVEIS:
─────────────────────────────────────
Problema:
├── Testes passam às vezes, falham outras
├── Erodi confiança no pipeline
├── Pessoas ignoram falhas
├── Pipeline se torna inútil
└── Problema sério

Conserto:
├── Trate como bug de alta prioridade
├── Quarentena enquanto conserta
├── Não apenas retry
├── Rastreie taxa instável
├── Análise de causa raiz
└── Tolerância zero

CONSISTÊNCIA DE AMBIENTE:
─────────────────────────────────────
├── Docker para builds consistentes
├── Versões de dependências fixadas
├── Ambientes reprodutíveis
├── Mesmo tooling em todos lugares
└── Sem "funciona na minha máquina"

TRATAMENTO DE FALHA:
─────────────────────────────────────
├── Mensagens de erro claras
├── Artefatos em falha
├── Fácil reproduzir localmente
├── Capacidade de rollback
├── Degradação graciosa
└── Falhas debugáveis

MONITORAMENTO:
─────────────────────────────────────
Rastreie:
├── Tendência de duração do pipeline
├── Taxa de sucesso
├── Taxa de testes instáveis
├── Gargalos de estágio
├── Melhoria orientada por dados
└── Métricas de pipeline

Estratégias de Deployment

Deployments Seguros

ESTRATÉGIAS DE DEPLOYMENT
═════════════════════════

BLUE-GREEN:
─────────────────────────────────────
├── Dois ambientes idênticos
├── Deploy para inativo (green)
├── Trocar tráfego
├── Antigo (blue) é rollback
├── Rollback rápido
└── Zero downtime

CANARY:
─────────────────────────────────────
├── Deploy para pequena % de tráfego
├── Monitorar por problemas
├── Aumentar % gradualmente
├── Roll back se problemas
├── Rollout progressivo
└── Risco controlado

ROLLING:
─────────────────────────────────────
├── Atualizar instâncias uma por uma
├── Sempre algumas saudáveis
├── Transição gradual
├── Natural para k8s/containers
└── Update incremental

FEATURE FLAGS:
─────────────────────────────────────
├── Deploy código desabilitado
├── Habilitar via flag
├── Separar deploy de release
├── Rollback instantâneo
└── Deployment desacoplado

Integração GitScrum

Rastreando Pipeline

GITSCRUM PARA CI/CD
═══════════════════

TAREFAS DE DEPLOYMENT:
─────────────────────────────────────
├── Rastreie trabalho relacionado a deployment
├── Label: infraestrutura
├── Melhorias de pipeline
├── Visível no sprint
└── Trabalho de primeira classe

RASTREAMENTO DE RELEASE:
─────────────────────────────────────
├── Link commits para tarefas
├── O que foi enviado quando
├── Release notes
├── Rastreabilidade
└── Conectado

RESPOSTA A INCIDENTE:
─────────────────────────────────────
├── Falhas de pipeline como tarefas
├── Rastreie tempo de resolução
├── Documentação de post-mortem
├── Ações de melhoria
└── Melhoria contínua

Melhores Práticas

Para Pipelines CI/CD

  1. Feedback rápido — Menos de 10 min CI
  2. Confiável — Conserte testes instáveis
  3. Paralelizado — Execute jobs concorrentemente
  4. Cacheado — Reutilize trabalho
  5. Deployment progressivo — Canary/blue-green

Anti-Padrões

ERROS DE PIPELINE:
✗ Pipelines lentos (> 30 min)
✗ Ignorando testes instáveis
✗ Sem cache
✗ Sequencial quando paralelo possível
✗ Passos manuais de deployment
✗ Sem plano de rollback
✗ Deploy direto para prod
✗ Sem monitoramento

Soluções Relacionadas