release: ci-shared develop → main (reuso por tree, orçamento de testes, verificar-docs, pr-checks) #46

Merged
tarcisio merged 13 commits from develop into main 2026-10-05 07:49:16 -03:00
Owner

Release do ci-shared: develop → main

Leva aos produtos (que chamam @main):

  • #40 pr-checks em PR/push para develop [INFRA-68363]
  • #41 tests/release verde no macOS sem esconder o CI [INFRA-68242]
  • #42 reuso por tree no PR para main — uma suíte por versão do código [TH-68150] (economiza ~10–20 min por release)
  • #43 orçamento do passo de testes do backend pelo p90 medido (30 min, job 40) [INFRA-68352]
  • #44 verificar-docs lê o token do TMF/ORG do Infisical, secret como fallback [INFRA-68379]

Prova de campo esperada: o primeiro PR de release de um produto depois disto mostra backend/frontend 'reaproveitado do commit '.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Uab9wJsQ19HdJHwYi2uVip

## Release do ci-shared: develop → main Leva aos produtos (que chamam @main): - #40 pr-checks em PR/push para develop [INFRA-68363] - #41 tests/release verde no macOS sem esconder o CI [INFRA-68242] - #42 reuso por tree no PR para main — uma suíte por versão do código [TH-68150] (economiza ~10–20 min por release) - #43 orçamento do passo de testes do backend pelo p90 medido (30 min, job 40) [INFRA-68352] - #44 verificar-docs lê o token do TMF/ORG do Infisical, secret como fallback [INFRA-68379] Prova de campo esperada: o primeiro PR de release de um produto depois disto mostra backend/frontend 'reaproveitado do commit <sha>'. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01Uab9wJsQ19HdJHwYi2uVip
ci: pr-checks roda em PR e push para a develop do ci-shared + fluxo no README [INFRA-68363]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 2m38s
6252e2535d
A develop foi criada no ci-shared (decisao do operador, relatada pela sessao ORG). O pr-checks.yml,
unico workflow com gatilho proprio, so disparava para main: PR para a develop ficaria SEM CI,
um verde sem ter rodado. Agora pull_request e push cobrem main e develop; o nome do workflow e
do job (contexto de protecao) nao mudam.

- tests/ci-unico/test_pr_checks_gatilhos.py: trava os gatilhos (vermelho na versao anterior, 2 falhas),
  os nomes que viram contexto e que o pr-checks seja o unico workflow com gatilho proprio.
- README: o fluxo novo em 3 linhas (PR->develop, develop->main so do operador, produtos em @main).

Nao altera nenhum workflow reusavel; os produtos seguem em @main.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UdMSC8CGmShbesE5rfVNfe
Reviewed-on: #40
test(release): suite verde no macOS sem esconder o CI — skipUnless(flock) + wc portavel + guarda [INFRA-68242]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 2m22s
68f55f6321
tests/release dava 35 falhas + 1 erro em 351 testes no macOS; no Linux do CI a mesma
suite dava 351 OK. Causa: ambiente do teste, nao codigo do gate.
- 29: flock nao existe no macOS (deploy-remoto.sh:196 sai com 'flock ausente');
- 6: o mesmo script saindo cedo, com asserts seguintes enganosos;
- 1: wc do BSD preenche com espacos (stdin_lido=       0).

Aplica a convencao que o repo ja usa (skipUnless(shutil.which('flock'))) nas 6 classes
que rodam o deploy-remoto.sh (TestDeployRemoto, TestIdempotenciaEDisco, TestGarantias,
TestNiceIonice, TestCoalescenciaQA, TestPrune), torna o wc do script falso portavel e
acrescenta test_ambiente_ci.py: no CI (CI/GITHUB_ACTIONS) a ausencia de flock FALHA em
vez de pular, para o skip nao virar gate cego.

Prova: macOS 36 falhas -> 0 (353 testes, 67 skips com motivo); macOS com CI=true a
guarda falha (controle); Linux com CI=true 353 OK, 1 skip.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UdMSC8CGmShbesE5rfVNfe
ci: reuso por tree — uma suíte por versão do código no PR para main (TH-68150)
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 2m34s
d5d3eaedc8
No PR para main, o job changes procura um commit recente (últimos 30 da
develop + head dos PRs mergeados) com o MESMO tree git e o CI completo
verde (CI / ci e os 4 jobs executados, contexto pull_request). Se achar,
backend e frontend ficam NÃO SE APLICA com 'reaproveitado do commit <sha>
(tree idêntico)'. O gates (Trivy, audits, release) roda sempre.

Falha segura: API fora, status ausente, job pulado ou qualquer erro =
roda tudo; o script sai 0 sempre. PR para develop/epic/release nunca
reaproveita. Desliga com reuso_por_tree: false no ci-config.

O tree é calculado localmente: a API do Forgejo 15.0.9 devolve o SHA do
commit em commit.tree.sha (medido em 04/10/2026).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Uab9wJsQ19HdJHwYi2uVip
fix(ci): orçamento do passo de testes do backend pelo p90 medido: 30 min (job 40) [INFRA-68352]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 2m28s
a39ea9ea2a
O 1o orçamento (testes 25, job 30) era estimativa. Medido no DANI (04-05/10,
~5.700 testes): passo de testes 18,7-23,3 min (p90 23,3, n=7); job 20-24 min.
O run 3228 (DANI #821) foi cortado em 25:00 por context deadline exceeded; estava
~2x mais lento desde o início (10% em 11,6 min contra 4-5), com pausa de 211 s num
teste de migration. Teto do passo 30 (~1,3x o p90) e do job 40 (30 + ~10 dos demais).
Teste atualizado; vermelho contra o ci.yml anterior (1 falha), verde depois.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UdMSC8CGmShbesE5rfVNfe
fix(ci): verificar-docs-produto lê o token do TMF/ORG do Infisical, secret como fallback [INFRA-68379]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 2m27s
d0410bb51e
O reusable clonava o ORG com secrets.FORGEJO_TOKEN, que o DANI não tem (DAIS-68002:
workflows leem do Infisical). Agora lê CVE_OS_EXCECOES_TOKEN (INFRA/prod/ci, o mesmo
token só-leitura da lista única de CVE, INFRA-68311), com continue-on-error, e clona
por git dentro de um passo: Infisical vence, FORGEJO_TOKEN é fallback com aviso, sem
nenhum dos dois falha sem chamar o git; o valor nunca vai ao log.

Teste executa o script do passo com git falso: 7 vermelhos contra o workflow anterior,
verdes depois (tests/ci-unico 50 OK; ci-config, infisical-secrets, soberania OK).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UdMSC8CGmShbesE5rfVNfe
Reviewed-on: #41
Reviewed-on: #42
Reviewed-on: #43
Merge pull request 'fix(ci): verificar-docs-produto lê o token do TMF/ORG do Infisical, secret como fallback [INFRA-68379]' (#44) from fix/verificar-docs-token-infisical into develop
All checks were successful
PR checks (ci-shared) / testes (push) Successful in 2m34s
PR checks (ci-shared) / testes (pull_request) Successful in 2m34s
e0a7f1be0f
Reviewed-on: #44
Causa real de o verificar-docs nunca ter passado: o Forgejo reserva o prefixo FORGEJO_,
então secrets.FORGEJO_TOKEN no reusable era o token AUTOMATICO do job (so enxerga o proprio
repo) e o clone do TMF/ORG falhava. Ordem agora: input org_leitura_token, secrets.ORG_LEITURA_TOKEN
do caller, CVE_OS_EXCECOES_TOKEN do Infisical INFRA/prod/ci; sem nenhum, falha com mensagem
clara SEM chamar o git. Sem bloco secrets: em workflow_call (INFRA-64944).

Teste: 8 checagens com git falso (6 vermelhas contra a versao anterior), mais trava de que o
run do clone nao tem expressao ${{ }} (injetaria o secret na mensagem).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UdMSC8CGmShbesE5rfVNfe
merge: origin/develop -> fix/verificar-docs-token-infisical
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 2m44s
687fff2b4e
Atualiza a branch com a base (pr.py atualizar: merge --no-commit + commit como tmf-ia).
Merge pull request 'fix(ci): verificar-docs-produto recebe ORG_LEITURA_TOKEN (input/secret do caller), sem FORGEJO_TOKEN [INFRA-68379]' (#45) from fix/verificar-docs-token-infisical into develop
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 2m55s
PR checks (ci-shared) / testes (push) Successful in 2m55s
4b909cc845
Reviewed-on: #45
tarcisio deleted branch develop 2026-10-05 07:49:16 -03:00
Sign in to join this conversation.
No reviewers
No labels
seguranca
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
TMF/ci-shared!46
No description provided.