Integração com GitHub Actions
Um guia de receitas para GitHub Actions + proteção de branch em equipes Node.js - verificações obrigatórias, releases baseadas em tags e templates de PR que capturam lacunas de migração e rollback antes do merge.
Busque em todas as páginas da documentação
Um guia de receitas para GitHub Actions + proteção de branch em equipes Node.js - verificações obrigatórias, releases baseadas em tags e templates de PR que capturam lacunas de migração e rollback antes do merge.
Cartão de receita de referência rápida - pronto para copiar e colar.
# .github/workflows/pr-checks.yml
name: PR Checks
on:
pull_request:
branches: [main]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "24.18.0"
cache: npm
- run: npm ci
- run: npm run typecheck
- run: npm run lint
- run: npm test -- --ci
- run: npm audit --audit-level=high# .github/workflows/release.yml
name: Release
on:
push:
tags: ["v*"]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "24.18.0"
cache: npm
- run: npm ci
- run: npm run build
- run: npm test -- --ci
# docker build + push para o registry<!-- .github/pull_request_template.md -->
## Resumo
## Ticket
<!-- API-___ -->
## Checklist de API / DB
- [ ] OpenAPI ou lista de rotas atualizada
- [ ] Migração incluída (ou N/A)
- [ ] Plano de rollback documentado
- [ ] Compatibilidade do worker verificada (se o esquema de eventos mudou)
## CI
- [ ] Verificação `quality` verde localmente: `npm ci && npm run typecheck && npm test`Proteção de branch (UI do GitHub):
qualitymainQuando usar isso:
Passo 1 - Combinar scripts locais e de CI
{
"scripts": {
"typecheck": "tsc --noEmit",
"lint": "eslint src test",
"test": "node --import tsx --test test/**/*.test.ts",
"build": "tsc -p tsconfig.build.json"
}
}# .husky/pre-push
npm run typecheck && npm testPasso 2 - Filtro de caminho para monorepo
on:
pull_request:
paths:
- "services/orders-api/**"
- "package-lock.json"
defaults:
run:
working-directory: services/orders-apiPasso 3 - Gate de migração (job opcional)
db-lint:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_PASSWORD: postgres
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run db:migrate
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5432/testPasso 4 - Verificações obrigatórias na proteção de branch
Settings → Branches → main → Require status checks:
✓ quality
✓ db-lint (se migrações no PR)| Label | Efeito |
|---|---|
skip-audit | Apenas Docs; auditoria dispensada com aprovação de segurança |
has-migration | Dispara o job db-lint |
worker-change | Exige nota de deploy do worker no template |
Documente a exceção em docs/security-audit-exceptions.md com data de expiração. Não desabilite permanentemente o audit na CI.
Matriz temporária nas verificações de PR durante a migração LTS. Remova a versão N-2 quando a frota estiver totalmente na 24.18.0.
Restrinja a criação de tags para gerentes de release ou bot de CI. Tags disparam produção - proteja com regras.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026