Funcionalidade deploy_catalog - BrunodosSantosVaz/big-bang GitHub Wiki

Catálogo de destinos e artefatos

Funcionalidade BB-F-008 · requisito RF-BB-008 · versão documentada 3.1.0 · código 00ac9462d6b51b904656e3f5dbee29576b93a5da.

Finalidade

Resolver entregas por contratos instalados, distinguindo suporte implementado de integração reservada. O alvo personalizado permite ao projeto executar seus próprios scripts fora de .bigbang, mantendo a identidade imutável da imagem promovida.

Atores

Pessoa responsável pelo projeto, IA com posse confirmada e automações explicitamente autorizadas.

Pré-condições

Repositório e raiz corretos, versão instalada e configuração compatível. O alvo personalizado exige quatro scripts .sh existentes, não vazios, relativos à raiz do projeto e fora de .bigbang. Somente nomes de variáveis públicas podem ser declarados em bigbang.toml; esse alvo não aceita nomes de segredos.

Fluxo principal

Ler contratos de alvo e artefato, conferir capacidades e compatibilidade e montar a composição antes de gerar arquivos. No alvo personalizado, staging e produção executam migração, publicação e saúde em ordem, passando aos scripts um manifesto com os digests dos serviços. Produção separa preparação autenticada, scripts do projeto sem credenciais e criação autenticada da release; rollback baixa e confere o manifesto num passo separado e só depois executa os scripts do projeto, sem o token que leu a release.

Validações

Os quatro caminhos devem permanecer dentro do projeto, sem symlinks que escapem da raiz ou apontem para .bigbang. O manifesto deve conter exatamente um digest SHA-256 imutável por serviço configurado. O alvo AWS é implementado em estágio Beta (S3 + CloudFront via OIDC, consumindo formato estático); PaaS permanece reservado e não é anunciado como implementado.

Alternativas e erros

Contrato ausente, inválido ou incompatível, script ausente ou manifesto mutável interrompe a geração ou o deploy. Falha de migração, publicação ou saúde impede o próximo passo do alvo personalizado; falha no rollback não inicia uma migração.

Permissões

Antes de executar qualquer script do projeto, o adaptador usa env -i e repassa somente PATH e, quando definidas, LANG, LC_ALL, TZ, TMPDIR, TMP e TEMP, além dos valores públicos declarados em variaveis_personalizado. Os workflows executam esse código em passos sem GH_TOKEN, GITHUB_TOKEN, outros segredos da publicação ou credenciais Git persistidas. Um teste procura tokens sentinela no ambiente de todos os processos ancestrais do script. Produção e rollback real continuam atrás da aprovação humana do ambiente producao. Esta funcionalidade não concede novas permissões a visitantes nem substitui decisões exigidas pelo fluxo.

Resultados

Resultado esperado: workflows gerados chamam os scripts do projeto com o manifesto de imagem conferido, sem copiar esses scripts para .bigbang. O retorno e os arquivos afetados são conferidos pelos cenários rastreados abaixo; falha impede considerar a operação concluída.

Configuração do alvo personalizado

Declare os caminhos no bigbang.toml, relativos à raiz e fora de .bigbang:

[entrega]
perfil = "deploy"
alvo = "personalizado"

[deploy]
script_publicar = "scripts/deploy/publicar.sh"
script_migrar = "scripts/deploy/migrar.sh"
script_saude = "scripts/deploy/saude.sh"
script_voltar = "scripts/deploy/voltar.sh"
variaveis_personalizado = ["DEPLOY_APP"]

publicar e migrar recebem <ambiente> <manifesto>; saude recebe <ambiente>; voltar recebe <ambiente> <manifesto> <versao>. O manifesto temporário tem uma linha servico=imagem@sha256:<64 hex> por serviço configurado. O workflow baixa o imagem.txt no passo autenticado, passa seu conteúdo conferido ao passo sem credenciais e não executa migração durante rollback. Cada script deve sair com código zero ao concluir; ausência, caminho inválido ou falha impede a etapa seguinte.

Referência da implementação

Os símbolos abaixo compõem o inventário real do módulo, incluindo auxiliares internos; não representam APIs públicas independentes.

deploy_catalog.py

Implementação revisada.

Símbolo Linha
Target 29
Artifact 42
_fail 51
_inside 55
_base 61
_read 65
_names 90
_file 100
read_target 106
read_artifact 130
_custom_script 150
_customize_target 169
resolve 188
entries 209
problems 226

artefato.toml

Implementação revisada.

artefato.toml

Implementação revisada.

artefato.toml

Implementação revisada.

alvo.toml

Implementação revisada.

alvo.toml

Implementação revisada.

alvo.toml

Implementação revisada.

alvo.toml

Implementação revisada.

alvo.toml

Implementação revisada.

config.py

Implementação revisada.

Símbolo Linha
_string 37
_integer 51
_boolean 63
_string_list 67
_regex 84
validate 165
_validate_legacy 178
_validate_section 200
_cross_checks 225
dialect 263
_message_to_v3 278
_v3_to_legacy 285
_legacy_to_v3 355
_with_optional 370
views 380
text_to_v3 413
parse 447
load 454
_consistent 477
get 493
_get 524
format_value 538
check 38

names.py

Implementação revisada.

Símbolo Linha
cli_name 103
cli_option 109
is_build_key 171
key_to_v3 175
key_to_legacy 184
value_to_v3 202
value_to_legacy 206
label_dialect 214
label 220

README.md

Implementação revisada.

alvo.sh

Implementação revisada.

promover.sh

Implementação revisada.

generator.py

Implementação revisada.

Símbolo Linha
Plan 35
pipeline_installed 49
initial_context 57
dependabot_entries 65
with_computed 82
build_plan 366
framework_plan 394
is_v3_pipeline 445
_layers 450
_walk 466
_add_tree 474
_add_skills 486
agents_block 507
_add_agents_md 515
stack_block 530
_add_stack_md 544
_generated_candidates 558
_text_has_notice 587
changes 594
diff 607
apply 614
_remove_empty_parents 626
__init__ 38
add 44

bb-publicar-producao.yml.tmpl

Implementação revisada.

publicar-producao.sh

Implementação revisada.

bb-voltar-versao.yml.tmpl

Implementação revisada.

publicar-personalizado.sh

Implementação revisada.

finalizar-publicacao.sh

Implementação revisada.

MIGRACAO.md

Implementação revisada.

14-automacoes.md

Implementação revisada.

Cenários e rastreabilidade

Requisitos · Matriz de rastreabilidade · Referência CLI

Fontes rastreadas

⚠️ **GitHub.com Fallback** ⚠️