Skip to content

fix(ci): check obrigatório passa sem rodar (needs, continue-on-error, matrix) - #26

Open
vinimartinsufrr wants to merge 2 commits into
developfrom
fix/ci-checks-obrigatorios-skip
Open

vinimartinsufrr wants to merge 2 commits into
developfrom
fix/ci-checks-obrigatorios-skip

Conversation

@vinimartinsufrr

Copy link
Copy Markdown
Collaborator

O que muda

check_checks_obrigatorios (scripts/qa/ci_invariants.sh) passa a detectar três jeitos de um check obrigatório reportar sucesso sem ter rodado:

  • needs: apontando para um job fora de CHECKS_OBRIGATORIOS (ex.: android-e2e) — se esse job falhar, o obrigatório fica skipped, e a proteção de branch conta skipped como aprovado.
  • continue-on-error: true no job, que transforma falha em sucesso.
  • strategy.matrix, que muda o nome do check para job (valor) e não casa mais com o contexto exigido pela proteção — a PR espera para sempre.

Também corrige a mensagem do caso if: já coberto: dizia "pode nunca reportar", mas um job pulado por if: sempre reporta — só que reporta skipped/verde. O bloqueio já estava certo, só a causa citada estava errada.

Por quê

Item adiado da revisão final das PRs #16/#18 (auditoria de CI de 2026-09-28) — issue #20.

Como testar

python3 -m pip install pyyaml   # se ainda não tiver
./scripts/qa/ci_invariants.sh              # continua ok contra o ci.yml real
./scripts/qa/ci_invariants_test.sh         # fixture positiva + negativa por checagem nova

scripts/qa/ci_invariants_test.sh é novo: constrói workflows sintéticos mínimos em mktemp -d (via CI_INVARIANTS_WORKFLOW, também novo) para provar que cada checagem dispara no caso ruim e não dispara numa variação vizinha sem o defeito — sem isso, as três checagens só seriam exercitadas pelo ci.yml real de hoje, que não tem nenhum dos três problemas. Plugado no job workflow-lint, logo depois do ci_invariants.sh.

De passagem: força PYTHONIOENCODING=utf-8 na chamada do Python — sem isso as mensagens de falha (têm acento) saem corrompidas em locale não-UTF-8 (achado rodando localmente no Windows; sem efeito nos runners Linux do CI, que já usam UTF-8).

Fora do escopo

Os outros gaps documentados no ci_invariants.sh (issues #19, #21-#24) — não tocados aqui. Nenhum job foi criado/renomeado/removido, então a proteção de branch não precisa ser reaplicada.

Closes #20

🤖 Generated with Claude Code

… matrix)

check_checks_obrigatorios (scripts/qa/ci_invariants.sh) garantia que um check
obrigatório existe e não tem `if:` no job, mas não pegava três outros jeitos
de ele reportar sucesso sem ter rodado nada:

- needs: apontando para um job fora de CHECKS_OBRIGATORIOS (ex.: android-e2e)
  — se esse job falhar, o obrigatório fica skipped, e skipped conta como
  aprovado na proteção de branch.
- continue-on-error: true no job, que transforma falha em sucesso.
- strategy.matrix, que muda o nome do check para "job (valor)" e não casa
  mais com o contexto exigido pela proteção — a PR espera para sempre.

Também corrige a mensagem do caso se `if:` já coberto: dizia "pode nunca
reportar", mas um job pulado por if: sempre reporta, só que reporta skipped/
verde — o bloqueio já estava certo, só a causa citada estava errada.

scripts/qa/ci_invariants_test.sh cobre as três checagens novas com fixture
positiva e negativa cada (ex.: needs: para outro job obrigatório não deve
disparar, só needs: para um job fora do conjunto obrigatório deve), plugado
no job workflow-lint logo depois do ci_invariants.sh. De passagem, força
PYTHONIOENCODING=utf-8 na chamada do Python — sem isso as mensagens de falha
saem corrompidas em locales que não são UTF-8 por padrão (achado ao rodar
localmente neste Windows; sem efeito nos runners Linux do CI, que já usam
UTF-8, mas deixa o script correto independente do host).

CLAUDE.md e AGENTS.md atualizados no mesmo commit com as novas condições de
falha e a lista de lacunas conhecidas (issues #19-#24), por exigência do
próprio workflow-lint.

Closes #20

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@hbgit

hbgit commented Sep 30, 2026

Copy link
Copy Markdown
Owner

Olá @vinimartinsufrr obrigado pelas suas contribuições. Contudo, o seu PR está apresentando conflitos. Favor, atualizar com o develop.

Resolve conflitos com o avanço de develop (issue #22 e trabalho de
FCM/push): unifica a env var de override do workflow sintético
(CI_WORKFLOW_PATH / CI_INVARIANTS_WORKFLOW), mescla a prosa de
AGENTS.md/CLAUDE.md sobre as issues #20 e #22 fechadas, e combina os
dois steps de teste do ci.yml. Também atualiza a fixture sintética de
ci_invariants_test.sh com os passos de FCM que check_credenciais_fcm
(vindo de develop) passou a exigir no job android-e2e.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants