fix(crash): arnes de automacao apontado para producao nao e crash do … #2288
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: pr-fast | |
| on: | |
| push: | |
| branches: [main] | |
| tags: ['v*'] | |
| pull_request: | |
| concurrency: | |
| group: pr-fast-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 | |
| - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - run: npm ci | |
| - name: Python CI scripts syntax | |
| run: python3 -m py_compile scripts/ci/*.py | |
| - name: Bash scripts syntax | |
| run: bash -n scripts/*.sh | |
| - name: Fronteira de confiança dos workflows | |
| run: python3 scripts/ci/workflow_security_check.py --selftest | |
| - name: Contrato do release (nome, créditos e DCO do bot) | |
| run: npm run eval:release | |
| - name: Syntax check do jogo (public/js) | |
| run: npm run syntax | |
| # As réguas de telemetria/identidade/proveniência migraram com as rotas para o | |
| # corosolto/backend (api/reguas/); aqui fica o portão de que a migração não regride | |
| # e o pedaço da proveniência que continua no cliente (hook de console.error). | |
| - name: Rotas de banco fora do cliente (18 migradas, 307 em dia) | |
| run: npm run eval:apis | |
| - name: Proveniência de erros — lado do cliente (hook de console) | |
| run: npm run eval:error-console | |
| - name: UUID compatível com navegadores antigos | |
| run: npm run eval:uuid | |
| - name: Acúmulo de armas no chão tem teto | |
| run: npm run eval:drop | |
| # Pendurar a régua só no `check:fast` a faria rodar na máquina de quem lembra | |
| # de rodar, e NÃO no portão: este job lista cada `npm run eval:*` explicitamente. | |
| - name: Todo mapa devolve o que o game.js consome | |
| run: npm run eval:mapcontrato | |
| - name: Amazônia acessível e bots entre palafitas | |
| run: npm run eval:amazonia | |
| - name: Escadão — circulação, estrutura e casa | |
| run: node tools/eval/runner.mjs eval:escadao-graph eval:escadao-home eval:escadao-structure eval:escadao-descent eval:escadao-details | |
| - name: Escadão — compatibilidade com pacote de áudio publicado | |
| run: node tools/eval/escadao-audio-pack-check.mjs | |
| - name: Lajes — geometria, ambiência, integração e preview | |
| run: node tools/eval/runner.mjs eval:lajes-visual eval:lajes-ruas eval:lajes-game eval:lajes-ambiencia eval:lajes-santos eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:lajes-raycast eval:mappreview | |
| - name: Sertão (tema, rotas, criação e integração) | |
| run: | | |
| npm run eval:sertao | |
| npm run eval:velhooeste | |
| npm run eval:sertao-livestock | |
| npm run eval:sertao-integration | |
| npm run eval:sertao-sky-lifecycle | |
| - name: Veículos do estacionamento em escala de fábrica | |
| run: npm run eval:escala | |
| - name: Orçamento de shader WebGL1 | |
| run: npm run eval:shaderbudget | |
| # O ARCH.md (índice por linha + tabela de conflito) é GERADO. Escrito à | |
| # mão ele desatualiza no primeiro commit, e uma tabela de conflito com | |
| # linha errada é pior que não ter tabela: dois agentes acham que estão em | |
| # regiões diferentes e não estão. | |
| - name: Documentação gerada está em dia | |
| run: npm run docs:check | |
| - name: ARCH.md gerado está em dia | |
| run: npm run arch:check | |
| # Precisa de rede, por isso NÃO entra no check:deploy (que roda dentro do | |
| # build da Vercel). Vulnerabilidade nova em dep de produção reprova aqui. | |
| - name: Dependência de produção sem vulnerabilidade nova | |
| run: npm run eval:deps | |
| - name: Manifesto de wallpapers está em dia | |
| run: npm run media:check | |
| - name: Texto público sem travessão | |
| run: npm run travessao:check | |
| # Hash das skills de terceiros confere com o skills-lock.json (issue #42): | |
| # lock que ninguém verifica não detecta conteúdo trocado depois de travado. | |
| - name: Skills de terceiros conferem com o lock | |
| run: npm run verify:skills | |
| # O auditor de VM escreve o JSON consumido pelas invariantes; a ordem é contrato. | |
| - name: Enquadramento do viewmodel por arma (26 armas, GLB real) | |
| run: node tools/eval/vm-mint-audit.mjs | |
| - name: Invariantes (portão — falha crítica reprova o PR) | |
| run: node tools/eval/invariants.mjs | |
| - name: Coice do viewmodel (near plane + pitch em rajada) | |
| run: node tools/eval/vm-kick-sim.mjs | |
| - name: Navegação dos bots (60 s × 5 mapas, sementes fixas) | |
| run: node tools/eval/botsim.mjs 60 all | |
| - name: Astro build | |
| run: npm run build | |
| # PORTÃO DO SITE. `astro build` verde não prova nada sobre as rotas: | |
| # /ranking pode dar 500, /sitemap.xml pode sair vazio e o build passa em | |
| # todos os casos. Roda DEPOIS do build porque o arnês sobe o `astro dev`, | |
| # que precisa das deps instaladas — e checa o caminho de degradação SEM | |
| # Supabase, que é exatamente o estado do CI. | |
| - name: Smoke do site (13 rotas, contrato + JSON-LD) | |
| run: node tools/eval/site-smoke.mjs | |
| # O bloco de autoria sai do shortlog e o squash reescreve o autor: num PR ele não é | |
| # derivável (ver tools/eval/docs-autoria-check.mjs). Aqui, na main, é — e só aqui reprova. | |
| # fetch-depth: 0 é obrigatório: com clone raso o gerador PULA esse bloco e o portão fica cego. | |
| autoria-na-main: | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - run: npm ci | |
| - name: Bloco de autoria em dia (derivável só depois do merge) | |
| run: npm run docs:check:autoria | |
| dco: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 | |
| with: | |
| python-version: '3.13' | |
| # Régua se prova antes de medir o PR: portão quebrado passa calado. | |
| - name: Autoteste das réguas de CI | |
| run: | | |
| python3 scripts/ci/ensure_labels.py --selftest | |
| python3 scripts/ci/autofix_allowlist.py --selftest | |
| python3 scripts/ci/dco_check.py --selftest | |
| python3 scripts/ci/agente_check.py --selftest | |
| - name: Check Signed-off-by | |
| run: | | |
| printf '{"baseRefOid":"%s","headRefOid":"%s"}' \ | |
| "${{ github.event.pull_request.base.sha }}" \ | |
| "${{ github.event.pull_request.head.sha }}" > /tmp/dco.json | |
| python3 scripts/ci/dco_check.py < /tmp/dco.json | |
| # A régua se prova antes de medir o PR: sem isto, portão quebrado passa calado. | |
| - name: Check trailer Agent | |
| run: python3 scripts/ci/agente_check.py < /tmp/dco.json | |
| release: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 | |
| - name: Extrair notas do CHANGELOG | |
| run: | | |
| TAG="${GITHUB_REF_NAME#v}" | |
| awk "/^## \\[$TAG\\]/{f=1;next}/^## \\[/{f=0}f" CHANGELOG.md > release-body.md | |
| - name: Criar GitHub Release | |
| run: | | |
| EXTRA=() | |
| if [ -s release-body.md ]; then | |
| EXTRA=(--notes "$(cat release-body.md)") | |
| fi | |
| # Idempotente: o release.yml do push na main e este job do push da | |
| # TAG criam a mesma release numa corrida de segundos — o perdedor | |
| # levava 422 "tag_name already exists" e pintava o run de vermelho | |
| # (alpha.154, 18/08). Release que já existe NÃO SE TOCA: o `edit` | |
| # com --notes do CHANGELOG APAGAVA a seção "What's Changed" com os | |
| # colaboradores que o vencedor gerou (alpha.156-.158, 19/08). | |
| TAG="${{ github.ref_name }}" | |
| if gh release view "$TAG" >/dev/null 2>&1; then | |
| echo "release $TAG já existe (vencedor da corrida) — nada a fazer" | |
| exit 0 | |
| fi | |
| gh release create "$TAG" --generate-notes "${EXTRA[@]}" --title "CSBR $TAG" | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |