fix(ci): jobs de validação do ci-base sempre rodam (always + guarda) [INFRA-68918] #65

Merged
tarcisio merged 2 commits from fix/INFRA-68918-ci-base-jobs-always into develop 2026-10-08 19:57:38 -03:00
Owner

O que

Os gates do reusável legado ci-base.yml (lint-python, test-python, build-react, audit-ds) passam a sempre rodar (if: always() + guarda de changes), como os do ci.yml. Epic de gates falsos INFRA-68918.

Conserta o falso verde na origem. Hoje esses jobs têm needs: changes sem always(): quando o changes falha, viram skipped publicado como success. O comentário do job já prometia "o job SEMPRE roda — nunca skipped publicado como success", mas o código não garantia.

Mudança (aditiva)

  • if: ${{ always() }} nos 4 gates + guarda "Guarda — changes passou?" como 1º step (falha de verdade se changes != success, em vez de sumir). Molde do ci.yml (INFRA-67721).
  • security-trivy fica fora: não tem needs: changes (roda independente).
  • No caminho feliz, nada muda (os jobs rodam igual); só o caminho de erro passa de falso-verde a falha explícita — com diagnóstico melhor que "ci-ok vermelho" ("test-python não rodou porque changes falhou").

Relação com o #62

O ci-ok (#62) já reprovava o skip no topo (o agregador). Este PR conserta na origem, em cada gate, melhorando o diagnóstico. Os dois se complementam.

Nota de ROI: o ci-base é legado (os produtos migram para o ci.yml pelo playbook INFRA-65726). Mas enquanto Hub/HelpCor/Fina o usam em produção, o gate honesto vale — e é aditivo/baixo risco.

Validação

tests/ci-unico (TestCiBaseGuarda) + soberania + if-em-caller + ci-config verdes. YAML válido.

Epic: INFRA-68918

🤖 Generated with Claude Code

## O que Os gates do reusável **legado** `ci-base.yml` (`lint-python`, `test-python`, `build-react`, `audit-ds`) passam a **sempre rodar** (`if: always()` + guarda de `changes`), como os do `ci.yml`. Epic de gates falsos **INFRA-68918**. **Conserta o falso verde na origem.** Hoje esses jobs têm `needs: changes` **sem `always()`**: quando o `changes` falha, viram `skipped` publicado como success. O comentário do job já prometia "o job SEMPRE roda — nunca skipped publicado como success", mas o código não garantia. ## Mudança (aditiva) - `if: ${{ always() }}` nos 4 gates + guarda `"Guarda — changes passou?"` como 1º step (falha de verdade se `changes != success`, em vez de sumir). Molde do `ci.yml` (INFRA-67721). - `security-trivy` fica fora: não tem `needs: changes` (roda independente). - **No caminho feliz, nada muda** (os jobs rodam igual); só o caminho de erro passa de falso-verde a falha explícita — com diagnóstico melhor que "ci-ok vermelho" ("test-python não rodou porque changes falhou"). ## Relação com o #62 O `ci-ok` (#62) já reprovava o skip **no topo** (o agregador). Este PR conserta **na origem**, em cada gate, melhorando o diagnóstico. Os dois se complementam. > Nota de ROI: o ci-base é legado (os produtos migram para o `ci.yml` pelo playbook INFRA-65726). Mas enquanto Hub/HelpCor/Fina o usam em produção, o gate honesto vale — e é aditivo/baixo risco. ## Validação `tests/ci-unico` (TestCiBaseGuarda) + soberania + if-em-caller + ci-config verdes. YAML válido. Epic: **INFRA-68918** 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(ci): jobs de validação do ci-base sempre rodam (always + guarda) [INFRA-68918]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 3m6s
732a27eee8
Os gates do reusável legado ci-base.yml (lint-python, test-python, build-react,
audit-ds) tinham `needs: changes` SEM `always()`: quando o changes falha, viram
`skipped` publicado como success — o falso verde. O comentário do job já PROMETIA
"o job SEMPRE roda", mas o código não garantia.

Pela regra 2 do padrão (ORG#385, "gate nunca é pulado"), check de validação sempre
roda e decide aplicabilidade no 1º step. Alinha o ci-base ao molde do ci.yml
(INFRA-67721): if: always() + guarda "changes passou?" como 1º step (falha de verdade
se changes != success, em vez de sumir). ADITIVO — no caminho feliz nada muda; só o
caminho de erro passa de falso-verde a falha explícita, com diagnóstico melhor que
"ci-ok vermelho". security-trivy fica fora (não tem needs: changes).

O ci-ok (#62) já reprovava o skip no topo; isto conserta na origem, em cada gate.

- tests/ci-unico: TestCiBaseGuarda (os 4 gates têm always()+guarda; security-trivy fora).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SCXwCdbp97ioN6p3rC3diT
merge: origin/develop -> fix/INFRA-68918-ci-base-jobs-always
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 3m22s
f4b16e94e1
Atualiza a branch com a base (pr.py atualizar: merge --no-commit + commit como tmf-ia).
tarcisio merged commit 5ee1708b2b into develop 2026-10-08 19:57:38 -03:00
tarcisio deleted branch fix/INFRA-68918-ci-base-jobs-always 2026-10-08 19:57:38 -03:00
Sign in to join this conversation.
No reviewers
No labels
seguranca
No milestone
No project
No assignees
1 participant
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!65
No description provided.