feat(release): health no slot ativo do blue-green e checks públicos com código aceito [INFRA-69282] #105

Merged
tmf-ia merged 2 commits from feat/INFRA-69282-release-dispatch-health-checks into develop 2026-10-10 15:06:38 -03:00
Owner

release.yml reusável: health no slot ativo do blue-green e checks públicos com código aceito [INFRA-69282]

Primeiro adotante: DANI (DAIS-68092, fatia D). Dois dos três itens da issue.

2. Health no blue-green.

  • Nova chave deploy_blue_green_upstream_file, com padrão "", que mantém o deploy_container fixo como hoje.
  • Preenchida, o deploy-remoto.sh lê o slot ativo no arquivo do router, com as mesmas regex do blue-green-router.sh ativo. Um teste confere que as regex são iguais.
  • Confere também o rótulo br.com.tmf.blue-green-slot.
  • Lê o slot antes do build (PREV_TAG e idempotência) e de novo depois (health e logs).
  • Arquivo inconsistente reprova e dispara o rollback.
  • No tmf-deploy-gate, UPSTREAM_FILE vem do conf do host: absoluto, sem .., forçado, e o cliente não escolhe.

3. Checks públicos.

  • Nova chave deploy_checks_publicos, com padrão [].
  • "<url>" aceita 2xx; "<url>: 401[,403]" aceita só os códigos listados.
  • O verify-publico.sh roda a lista depois do health de deploy_public_url, que não mudou.
  • As linhas são validadas antes de qualquer requisição.
  • Reprovação dispara rollback.

1. Frase de dispatch: fora deste PR.

  • Foi para a INFRA-69300, em needs_human.
  • Motivo: o release-chamador.yml só declara version e environment, e ligar o guard sem um input novo reprovaria todo dispatch.

Testes.

  • tests/release/test_release_dispatch_health_checks.py: 34 novos.
  • release: 407. Os 3 erros são os testes de SIGTERM de test_b3_resto, que erram igual na develop limpa por causa do load da máquina.
  • ci-config 150, deploy-guard, soberania, if-em-caller, ci-unico, reusable-publico e nginx-log: verdes.

Para o DANI adotar.

  • Com deploy_gate: true, reinstalar o tmf-deploy-gate no host e pôr UPSTREAM_FILE= no conf.
  • O deploy.sh do produto tem de reescrever o arquivo do router na troca de slot.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ES1xwVdpQV69zEsuLLKzx2

## release.yml reusável: health no slot ativo do blue-green e checks públicos com código aceito [INFRA-69282] Primeiro adotante: DANI (DAIS-68092, fatia D). Dois dos três itens da issue. **2. Health no blue-green.** - Nova chave `deploy_blue_green_upstream_file`, com padrão `""`, que mantém o `deploy_container` fixo como hoje. - Preenchida, o `deploy-remoto.sh` lê o slot ativo no arquivo do router, com as mesmas regex do `blue-green-router.sh ativo`. Um teste confere que as regex são iguais. - Confere também o rótulo `br.com.tmf.blue-green-slot`. - Lê o slot antes do build (PREV_TAG e idempotência) e de novo depois (health e logs). - Arquivo inconsistente reprova e dispara o rollback. - No `tmf-deploy-gate`, `UPSTREAM_FILE` vem do conf do host: absoluto, sem `..`, forçado, e o cliente não escolhe. **3. Checks públicos.** - Nova chave `deploy_checks_publicos`, com padrão `[]`. - `"<url>"` aceita 2xx; `"<url>: 401[,403]"` aceita só os códigos listados. - O `verify-publico.sh` roda a lista depois do health de `deploy_public_url`, que não mudou. - As linhas são validadas antes de qualquer requisição. - Reprovação dispara rollback. **1. Frase de dispatch: fora deste PR.** - Foi para a INFRA-69300, em needs_human. - Motivo: o `release-chamador.yml` só declara `version` e `environment`, e ligar o guard sem um input novo reprovaria todo dispatch. **Testes.** - `tests/release/test_release_dispatch_health_checks.py`: 34 novos. - release: 407. Os 3 erros são os testes de SIGTERM de `test_b3_resto`, que erram igual na develop limpa por causa do load da máquina. - ci-config 150, deploy-guard, soberania, if-em-caller, ci-unico, reusable-publico e nginx-log: verdes. **Para o DANI adotar.** - Com `deploy_gate: true`, reinstalar o tmf-deploy-gate no host e pôr `UPSTREAM_FILE=` no conf. - O deploy.sh do produto tem de reescrever o arquivo do router na troca de slot. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01ES1xwVdpQV69zEsuLLKzx2
- deploy_blue_green_upstream_file (padrão vazio): o deploy-remoto.sh roda o health no slot que o
  router serve (mesmas regex do blue-green-router.sh ativo + rótulo br.com.tmf.blue-green-slot),
  antes do build (PREV_TAG, idempotência) e depois dele; vazio = deploy_container fixo.
  Com deploy_gate: true o arquivo vem do conf do tmf-deploy-gate (UPSTREAM_FILE=, opcional).
- deploy_checks_publicos (padrão []): "<url>" (2xx) ou "<url>: <código>[,<código>]" no
  verify-publico.sh, depois do health de deploy_public_url, que não muda.
- A frase de dispatch (INFRA-68070) fica de fora: o release-chamador.yml não tem o input
  autorizacao e sem ele todo dispatch reprovaria.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ES1xwVdpQV69zEsuLLKzx2
merge: origin/develop em feat/INFRA-69282 (traz o hotfix de transição #103) [INFRA-69282]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 4m7s
d354d9689c
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ES1xwVdpQV69zEsuLLKzx2
tmf-ia merged commit 24c8ea0518 into develop 2026-10-10 15:06: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!105
No description provided.