Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 26 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,26 @@ jobs:
SMOKE_FAIL_ON_DEGRADED: '0'
run: node scripts/smoke-tests.mjs

# Job dedicado de typecheck para PRs — fail-fast ANTES do quality.
# Com baseline zerado (totalErrors=0), qualquer erro novo bloqueia o merge
# em ~3-4min (npm ci + tsc) em vez de ~15min (quality completo).
# Roda somente em pull_request para nao duplicar o step ja presente no quality.
typecheck-pr-gate:
name: TypeScript gate (PR fail-fast)
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
timeout-minutes: 10
Comment on lines +51 to +59
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
cache: npm
- name: Install dependencies
run: npm ci
- name: TypeScript type check (zero-tolerance baseline)
run: npm run typecheck

quality:
name: Lint, Typecheck & Test
runs-on: ubuntu-latest
Expand Down Expand Up @@ -98,13 +118,15 @@ jobs:
# ESLint baseline gate — único step de lint: roda ESLint internamente
# e falha SOMENTE para erros NOVOS vs .eslint-baseline.json.
# Step informacional separado removido (era redundante e dobrava o tempo de CI).
# TypeScript gate ANTES do lint — fail-fast: se houver regressao de tipo,
# mata o job sem gastar os ~5min de testes. Com baseline zerado (0 erros),
# qualquer erro novo (mesmo 1) falha imediatamente.
- name: TypeScript type check (fail-fast gate)
run: npm run typecheck

Comment on lines +121 to +126
- name: ESLint baseline gate (bloqueia apenas regressões novas)
run: npm run lint:baseline


- name: TypeScript type check
run: npm run typecheck

# hooks já cobertos pelo job dedicado hooks-tests (timeout-minutes: 10).
# test:strict-ref e test:coverage omitidos aqui — rodam em ref-warning-suite
# e integration-tests respectivamente, evitando tripla execução da suite.
Expand Down
Loading
Loading