Pipelines CI/CD com GitHub Actions: workflows reutilizáveis

May 6, 2026 (6d ago)

Problema

Cada repositório copia o mesmo pipeline de lint/test/build com pequenas variações. Secrets espalhados, jobs sem limite de concorrência e deploy para produção sem gate humano quando necessário.

Solução

Centralizar em reusable workflow (workflow_call) com inputs (environment, run_e2e). Usar environments do GitHub para secrets por stage e required reviewers em produção. Cache de dependências por lockfile.

Arquitetura

ci.yml (on push) → chama org/reusable-ci@v1
release.yml (on tag) → build artifact → deploy workflow com environment production

Código

# .github/workflows/ci.yml
jobs:
  quality:
    uses: my-org/actions/.github/workflows/node-ci.yml@main
    with:
      node-version: "22"
    secrets: inherit
# reusable: node-ci.yml
on:
  workflow_call:
    inputs:
      node-version: { required: true, type: string }
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ inputs.node-version }}
          cache: npm
      - run: npm ci
      - run: npm run lint && npm test

Performance

Cache npm/pnpm; paths filter para não rodar monólito inteiro; sharding de testes em monorepos grandes.

Melhorias futuras

Assinatura de artefatos; SBOM; deploy canário integrado ao provedor cloud.

Conclusão

CI/CD maduro é contrato de qualidade do time. Mostrar reusable workflows indica que você já sofreu com escala de engenharia.