CI/CD para times pequenos: o mínimo viável de testes, gates e deploy contínuo sem virar processo de big tech.
CI/CD para times pequenos: pipeline mínimo que funciona
Integração e entrega contínuas não são privilégio de empresa com platform team de vinte pessoas. Na TEK Softwares — muitas vezes eu e mais dois devs — pipeline enxuto evitou deploy manual de sexta que derruba emissão fiscal segunda. Este artigo descreve CI/CD mínimo viável para times pequenos em 2026: GitHub Actions ou GitLab CI, testes reais, artefato deployável, rollback claro — sem Jenkins cluster que ninguém mantém.
Princípios para time enxuto
- Um pipeline por repo — legível em um arquivo YAML.
- Fail fast — lint e unit test antes de integração lenta.
- Main sempre deployável — feature flag > long-lived branch hell.
- Secrets fora do repo — GitHub Encrypted Secrets, Vault se cliente exige.
Pipeline mínimo (Node/Java exemplo)
name: ci
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npm ci
- run: npm run lint
- run: npm test -- --coverage
Java equivalente: setup-java 21, mvn -B verify. Bloqueie merge se coverage cair abaixo threshold acordado.
O que rodar em PR versus main
PR: unit + lint + build + smoke integration (Testcontainers MySQL). Main merge: acima + deploy staging automático + tag semver opcional. Produção: manual approval ou release branch — cliente fiscal muitas vezes exige janela.
Deploy targets comuns
Vercel/Netlify hook para site Astro (web iniciantes). SSH + systemd restart para VPS PHP. Docker push ECR + ECS rolling update. Nunca scp manual sem checksum.
Banco e migrações
Flyway/Liquibase no pipeline staging; backup snapshot antes prod. Script rollback documentado — downgrade migration nem sempre existe; restore backup plan B.
Integração ERP e ETL
Job Pentaho não entra no mesmo pipeline Node — repo separado, Kitchen test em CI com Docker Pentaho ou mock steps. Parametrize jobs — parâmetros Pentaho.
Segurança no CI
Dependabot/Renovate para CVE npm/Maven. npm audit fail on critical. SAST opcional (Semgrep free tier). Secrets scan (gitleaks) pre-commit. Alinhado segurança 2026.
Notificações
Slack webhook ou e-mail quando main quebra. Dono do fix rotaciona — em time de três, todos veem. Dashboard Actions badge no README opcional.
Custo
GitHub Actions free tier generoso private repos; minutes acabam → otimizar cache node_modules/.m2. Self-hosted runner on-prem se cliente proíbe cloud — comum fiscal Brasil.
Anti-patterns
Pipeline de 45 min que dev skipa. Deploy só Felipe sabe. Teste flaky ignorado. Ambiente staging divergente prod (Java 17 vs 21). Corrija antes de adicionar Kubernetes.
Evolução natural
Adicionar E2E Playwright nightly, preview deploy por PR (Vercel), contract test Pact quando extrair microsserviço — microsserviços. Incremental.
Cache agressivo
actions/cache node_modules ~/.m2/repository. Chave hash lockfile. Build segundos vs minutos muda hábito rodar CI local push.
Artifact retention
Guarde jar/war 90 dias S3 lifecycle. Reproduz incident release antiga. Tag git sempre bate artifact.
Feature flags LaunchDarkly ou open
Deploy dark ligar flag staging QA prod gradual. Evita long branch divergência main.
Branch protection GitHub
Require PR review one approval, require status checks test, block force push main. Admin bypass só founder emergência documentada postmortem.
Preview deploy PR
Vercel bot comenta URL preview cada PR — QA cliente clica sem setup local. Reduz "works my machine".
Database seed staging
Anonymized dump produção mascarado CPF CNPJ LGPD. Refresh semanal script — teste integração dados realistas volume.
Rollback runbook one page
Passo 1 redeploy tag anterior Vercel. Passo 2 flyway undo se migration. Passo 3 comunicar stakeholder template Slack.
Matriz teste por camada
Unit 90 porcento coverage gate optional strict client fiscal. Integration Testcontainers MySQL real schema flyway migrate. E2E playwright smoke login emit nota homolog three scenarios nightly cron not every push save minutes.
Parallel jobs lint unit integration split github matrix fail fast lint first save billable minutes open source projeto.
Smoke test pos deploy staging
Script curl health login token emissao nota homolog cancelamento sequencia cinco minutos pos deploy automatico GitHub Action. Falha rollback alerta Slack webhook canal dev sem esperar QA manual descobrir terca.
Documentação pipeline onboarding
README secao CI: badges status branch main link workflow yaml comentado linha linha junior entende dez minutos. Runbook falha comum: test flaky timeout aumente runner ubuntu maior se necessario custo centavos minuto versus hora dev debug falso negativo.
Métrica DORA exposta dashboard interno motiva melhoria incremental mesmo time três pessoas — deployment frequency sobe quarter over quarter celebração retro pizza virtual custo zero moral alto.
Prática adicional TEK Softwares: revise este tópico com stakeholder operacional antes de fechar sprint — alinhamento negócio evita retrabalho custoso em produção fiscal e integrações críticas ERP que atendem milhares documentos eletrônicos mensais sem downtime planejado inadequado.
Documente lições aprendidas DECISIONS.md link artigos relacionados blog tiagoek manutenção longo prazo conteúdo AdSense qualidade leitor desenvolvedor arquiteto tom primeira pessoa experiência vinte anos mercado brasileiro software sob medida impressão 3D marca TEK unificada confiança cliente indicacao orgânica composição juros reputação técnica honestidade entrega previsível pipeline verde segurança prepared statement parametros pentaho cfop correto.
Referência cruzada TEK: combine este guia com práticas de produtividade, pipeline verde e integração ERP documentada nos demais artigos do blog tiagoek — leitura sequencial forma trilha onboarding completa para novos consultores da TEK Softwares em projetos Java, PHP, Pentaho e fiscal brasileiro.
Conclusão
CI/CD para times pequenos = disciplina repetível, não ferramenta cara. Lint, test, build, deploy staging, promoção controlada prod. Comece esta semana com YAML de vinte linhas; iterar beats planejar Jenkins por seis meses. Produtividade compõe — complemento em produtividade desenvolvedor.