feat(release): environment + environments{} sem default + guard de host por ambiente (B2) #31
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/INFRA-B2-environments"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
O
release.ymlganha o inputenvironment(prod|qa|dev, padrão prod) e o ci-config ganhaenvironments{}.Contrato
environments.<amb>:expected_hosteclusterobrigatórios, sem default;typepadrao|eks (eks não é deployado por este reusável). Sem o bloco só vale prod (comportamento atual).expected_host: tmfprodetype: eksfalham na resolução de config, no jobtag(sem SSH; odeploydepende dele).scripts/guard-ambiente.sh: aborta se o host de qa/dev respondertmfprod, ou se o hostname real diferir do esperado.environment: um deploy de qa publicadeploy/qa, nuncadeploy/production(que o watcher lê).templates/release-chamador.yml) repassaenvironment; o push de tag continua sendo prod. O parser do ci-config aceita um nível de mapa dentro de mapa.Prova: suíte
tests/release225/225 na tmf-ci-python:3.12 (27 testes novos emtest_environments.py). Os dois aceites negativos da issue têm teste:environment=devsemenvironments.devfalha antes do SSH; qa cujo host respondetmfprodé abortado. Mutação em 6 regras (guard, ambiente não declarado, expected_host sem default, contexto de qa, ambiente do Infisical, type) foi pega pelos testes.Não provado: nada rodou no Forgejo (
workflow_dispatchcomenvironment, repasse viaworkflow_call) — é o escopo do A4. Não sei se há ambientedevno Infisical (o schema só lista prod/qa eminfisical_env).verify-live/watcher ainda leem sódeploy/production(B5/B6). A cópia idêntica do chamador nos produtos diverge até a propagação; nenhum gatilho novo foi ligado.Modelo: ORG engenharia/decisoes/0014-modelo-unico-de-ambientes-e-operacao.md
🤖 Generated with Claude Code
https://claude.ai/code/session_01G2e3V17tRc4mAZ4ea1XX1e
release.yml ganha o input environment (prod|qa|dev, padrão prod). O ci-config ganha environments{} (expected_host e cluster obrigatórios por ambiente, sem default; type padrao|eks); o parser aceita um nível de mapa dentro de mapa. Ambiente não declarado, qa/dev apontando para tmfprod e type eks falham na resolução (job tag), antes de qualquer SSH. guard-ambiente.sh aborta se o host de qa/dev responder tmfprod. O Infisical e o commit status seguem o ambiente (deploy/qa nunca escreve deploy/production). 209 testes (27 novos); mutação nas 6 regras pega pelos testes. Empilhado sobre o PR #29. Modelo: ORG engenharia/decisoes/0014-modelo-unico-de-ambientes-e-operacao.md Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G2e3V17tRc4mAZ4ea1XX1e