feat(release): deploy de produção leva a done as issues do release, com travas de prefixo/container/revert [INFRA-69129] #98

Merged
tarcisio merged 3 commits from feat/INFRA-69129-done-no-deploy-v2 into develop 2026-10-09 23:45:28 -03:00
Owner

INFRA-69129: o deploy de produção leva a done as issues do release, com travas

O operador decidiu em 09/10/2026, por opção na sessão ORG, que o deploy de produção bem-sucedido leva a done as issues approved do release que têm todos os commits na tag. Este PR substitui o #95, que foi revisado e ajustado.

Quando roda: só depois de deploy, verificação pública e commit status OK. Só com environment == prod e com deploy_hub_done: true (padrão). Não tem always(). Se o Hub estiver fora do ar, o passo avisa e não derruba o deploy.

O que move:

  • só as chaves [PROJ-N] no assunto dos commits entre a tag anterior e a atual;
  • só os prefixos de hub_done_prefixos do produto. Se a lista estiver vazia, nada se move, e cada produto declara a sua, por exemplo [DAIS];
  • só issues em approved com todos os commits na tag. Commits em origin/develop ou em origin/epic/* fora da tag tiram a chave;
  • nunca epic, initiative ou story-container (type ou subtask_count > 0), que continuam como decisão humana;
  • nunca uma chave cujo commit no intervalo é Revert.

Modo ensaio, que só lista sem mover: no 1º deploy de cada produto, que não tem tag anterior, e quando há mais de 50 candidatas. Opcionalmente comenta numa issue de controle.

Token: usa o HUB_TOKEN do produto direto na API v2, então a trava HUB_STATUS_HUMANO, que existe só no cliente, não se aplica, por decisão do operador. Cada issue fechada recebe um comentário com a tag, o SHA e o link do run.

Prova: suíte com 941 passed. São 15 testes novos, e os 17 novos ou alterados falham contra o 03e12b2 (#95).

Adoção: cada produto acrescenta hub_done_prefixos ao .forgejo/ci-config.yml. Vale depois do release do ci-shared para a main.

🤖 Generated with Claude Code

https://claude.ai/code/session_017QrAM1chSgVpSwDrKJVLVn

## INFRA-69129: o deploy de produção leva a `done` as issues do release, com travas O operador decidiu em 09/10/2026, por opção na sessão ORG, que **o deploy de produção bem-sucedido leva a `done` as issues `approved` do release** que têm **todos** os commits na tag. Este PR substitui o #95, que foi revisado e ajustado. **Quando roda:** só depois de deploy, verificação pública e commit status OK. Só com `environment == prod` e com `deploy_hub_done: true` (padrão). Não tem `always()`. Se o Hub estiver fora do ar, o passo avisa e não derruba o deploy. **O que move:** - só as chaves `[PROJ-N]` no **assunto** dos commits entre a tag anterior e a atual; - só os prefixos de `hub_done_prefixos` do produto. **Se a lista estiver vazia, nada se move**, e cada produto declara a sua, por exemplo `[DAIS]`; - só issues em `approved` com todos os commits na tag. Commits em `origin/develop` ou em `origin/epic/*` fora da tag tiram a chave; - **nunca** epic, initiative ou story-container (`type` ou `subtask_count > 0`), que continuam como decisão humana; - **nunca** uma chave cujo commit no intervalo é `Revert`. **Modo ensaio**, que só lista sem mover: no 1º deploy de cada produto, que não tem tag anterior, e quando há mais de 50 candidatas. Opcionalmente comenta numa issue de controle. **Token:** usa o HUB_TOKEN do produto direto na API v2, então a trava `HUB_STATUS_HUMANO`, que existe só no cliente, **não se aplica**, por decisão do operador. Cada issue fechada recebe um comentário com a tag, o SHA e o link do run. **Prova:** suíte com 941 passed. São 15 testes novos, e os 17 novos ou alterados falham contra o 03e12b2 (#95). **Adoção:** cada produto acrescenta `hub_done_prefixos` ao `.forgejo/ci-config.yml`. Vale depois do release do ci-shared para a main. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017QrAM1chSgVpSwDrKJVLVn
feat(release): deploy de produção fecha as issues do release (approved → done) [INFRA-69129]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 3m27s
03e12b2bc7
Nada na frota levava issue a done: o hub-issue-sync para em approved no merge em develop
e não mexe no merge em main ("o deploy leva a done"), mas nenhum deploy fazia isso.

- release.yml (job deploy): três passos depois do deploy por tag com sucesso, só em prod,
  atrás da chave nova deploy_hub_done do ci-config (padrão true), todos com
  continue-on-error — falha do Hub vira :⚠️:, nunca derruba o deploy.
  HUB_TOKEN do Infisical do produto (infisical_*), mesmo mecanismo do hub-issue-sync.
- scripts/hub_done_no_deploy.py: chaves do assunto dos commits <tag anterior>..<tag>
  (branch do merge pelo assunto, corpo nunca, mesma regex do hub-issue-sync); pula chave
  com commit em origin/develop fora da tag (git log --cherry-pick --right-only); só
  approved → done (API v2); recusa do Hub (filha aberta) = pulada; comentário com tag,
  SHA e run; resumo no GITHUB_STEP_SUMMARY.
- tests/hub-done-no-deploy: repo git temporário com tags, Hub falso e contrato do yaml.
- docs (guia de adoção, scripts, workflows reusáveis), exemplo do ci-config e CHANGELOG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ES1xwVdpQV69zEsuLLKzx2
- hub_done_prefixos: só chaves do produto vão a done; vazio = nada move (:⚠️:)
- container (epic/initiative/issue com subtarefas, pelo campo type) pulado: decisão humana
- chave com commit Revert no intervalo pulada
- HUB_DONE_REFS com origin/epic/* (glob via git for-each-ref); squash develop→main documentado
  como falha para o lado seguro
- ensaio automático (só lista) no 1º deploy sem tag anterior e acima de 50 candidatas;
  HUB_DONE_DRY_RUN força; hub_done_issue_controle opcional recebe a lista
- docs: HUB_TOKEN do produto direto na API; trava HUB_STATUS_HUMANO não se aplica
  (decisão do operador, 09/10/2026)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017QrAM1chSgVpSwDrKJVLVn
Merge origin/develop em feat/INFRA-69129-done-no-deploy-v2
Some checks failed
PR checks (ci-shared) / testes (pull_request) Failing after 23m40s
ad1d23531f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017QrAM1chSgVpSwDrKJVLVn
tarcisio merged commit 7d82a04ab6 into develop 2026-10-09 23:45:28 -03:00
tarcisio deleted branch feat/INFRA-69129-done-no-deploy-v2 2026-10-09 23:45:28 -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!98
No description provided.