CI/CD é a prática de automatizar o pipeline de entrega de software: de um commit no repositório até a aplicação em produção.

CI: Integração Contínua

A cada push/PR, o pipeline roda automaticamente:

  1. Build: compila ou valida o código
  2. Lint: verifica estilo e padrões
  3. Testes: unitários, integração, e2e
  4. Análise de segurança: SAST, dependências vulneráveis

O objetivo é detectar problemas cedo, antes de chegar ao ambiente de produção.

CD: Deploy Contínuo / Entrega Contínua

ConceitoSignificado
Continuous Deliveryartefato sempre pronto para deploy, mas o disparo é manual
Continuous Deploymentdeploy automático após CI passar, sem intervenção humana

Ferramentas

FerramentaOnde rodaDestaque
GitHub ActionsGitHubintegrado ao repositório, marketplace amplo
GitLab CIGitLabpipelines nativos com stages bem definidos
Jenkinsself-hostedaltamente customizável, mais complexo
CircleCIcloud/self-hostedrápido, bom para paralelismo
ArgoCDKubernetesGitOps: sincroniza estado do cluster com o repo

Estrutura de um pipeline (GitHub Actions)

# .github/workflows/ci.yml
name: CI
 
on:
  push:
    branches: [main]
  pull_request:
 
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: pytest --cov=src
 
  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo "Deploy para produção..."

Promoção de ambientes

feature-branch → PR → CI (testes)
                      ↓ aprovado
               merge → main → CD → staging → aprovação manual → prod

Boas práticas

  • Fail fast: coloque testes rápidos no início do pipeline
  • Cache de dependências: evita reinstalar a cada run
  • Secrets como variáveis de ambiente: nunca hardcodar credenciais
  • Artifacts: preserve build outputs entre stages
  • Ambientes isolados: staging espelha prod em config, não em dados

Ver também: ArgoCD | Docker | Kubernetes