← Gestão de Releases: preparar, implementar e recuperar
07 / 12 · 60 MIN

Identidade e ordem de promoção

Distingue identidade do artefacto, ordem das decisões e âmbito da autorização antes de promover uma release.

O que está realmente a ser promovido

Começa por identificar a unidade da decisão. Numa release fictícia, a API 41 funciona com a configuração 7 e o batch 12. Um ticket que apenas diz API pronta deixa duas dependências por identificar. Constrói um registo com alvo, artefacto, configuração, dependências relevantes, evidência de validação e responsável. Depois compara esse registo com o que o job vai executar. Se a configuração mudou para 8, a identidade do binário pode continuar correta e a evidência de comportamento deixar de cobrir o conjunto. Em APS, este detalhe determina se uma equipa recebe um serviço previsível ou uma combinação nunca exercitada. O objetivo do registo é permitir a decisão e a investigação posteriores, com diferenças visíveis.

Uma tag não fixa os bytes

Executa o primeiro grupo do laboratório. O dicionário local associa candidate aos bytes A; guardamos o digest esperado e depois associamos a mesma tag aos bytes B. A comparação rejeita a substituição, enquanto os bytes A conservados continuam a corresponder. É um modelo de referência mutável, sem registry real. Faz uma previsão antes de correr o código: mudar o nome é necessário para mudar o conteúdo? Não. O digest permite comparar identidade, mas depende de uma referência fiável e não demonstra quem aprovou ou produziu o pacote. Para usar a ideia no trabalho, liga o artefacto identificado às evidências pertinentes e protege o caminho dessa referência até à promoção.

Executar um de cada vez não define a ordem

O segundo grupo começa em 40 e executa duas escritas sequenciais: 42 e depois 41. O resultado incondicional é 41, apesar de nunca existirem dois executores simultâneos. A versão seguinte aplica a condição seq menor que a intenção recebida. A escrita 42 altera uma linha; a escrita 41 altera zero; o alvo mantém 42. O resultado zero precisa de tratamento explícito, pois a instrução SQL pode terminar sem erro e não promover nada. Este é um modelo local de decisão monotónica, não uma prova de segurança de um controlador distribuído. Em GitLab, resource_group e o modo de processamento têm responsabilidades distintas; verifica também a política contra deployments desatualizados.

Recuperar pode ser uma nova decisão

Uma regra de atualidade não deve obrigar a escolher sempre bytes com um número de versão superior. No terceiro grupo, a intenção 43 aponta para artifact-40. O contador aumenta porque existe uma nova decisão, mesmo que o conteúdo selecionado seja anterior. Discute o que falta antes de transportar esta ideia para produção: autoridade, compatibilidade do estado, efeitos já produzidos, validação e procedimento de execução. O laboratório só demonstra a alteração condicionada do registo. Não demonstra recuperação de uma aplicação. Evita renumerar silenciosamente um job antigo para contornar a regra; a nova intenção tem de representar uma decisão real e rastreável sobre o estado observado.

Autorizações têm um âmbito

O sexto grupo compara uma aprovação de staging, configuração 7, com um pedido de produção, configuração 8. O digest é igual, mas ambiente e configuração diferem. O resultado enumera esses campos, sem consultar qualquer serviço de autorização. Usa a comparação para preparar perguntas concretas: quem pode decidir neste alvo, que evidência foi analisada e que alterações exigem nova avaliação? Em GitHub Actions, as regras do environment abrangem jobs que o referenciam; o nome visível production não substitui essa ligação. As funcionalidades disponíveis dependem do contexto e plano. Não concluas que uma aprovação foi aplicada a partir de um comentário isolado no ticket ou de um teste local de campos.

Oficina: rever a decisão de promoção

Prepara três cartões fictícios: estado atual 42, job pendente 41 e pedido de recuperação 43 para artefacto 40. Para cada cartão, escreve o efeito esperado, a evidência de identidade, o âmbito de autorização e a condição de paragem. Executa o laboratório e compara previsões com os registos. Depois altera apenas o alvo de staging para produção e explica porque o mesmo digest não conserva automaticamente a autorização. O resultado esperado da oficina é uma decisão justificada, incluindo o que ainda não foi demonstrado. Não existe pipeline real neste exercício. Resume a aprendizagem distinguindo conteúdo, intenção e permissão; relaciona-a com gestão de alterações, CI/CD e responsabilidade do suporte após a release.

python3 content/labs/release-evidence/run.py
# Sequential intents: 42, then 41
# Unconditional final sequence: 41
# Conditional update final sequence: 42; affected rows: [1, 0]
# New recovery intent: sequence 43, artifact-40
# Local SQLite model, not a vendor pipeline. 
NA PRÁTICA

Numa equipa fictícia de fundos, dois jobs aprovados em momentos diferentes chegam ao mesmo ambiente fora da ordem pretendida.

Armadilhas comuns

Confiar numa tag mutável, equiparar hash a autorização, confundir lock com ordem e reutilizar uma aprovação fora do seu âmbito.

Tópicos relacionados: Gestão de alterações · CI/CD · Suporte à produção L3

Leva esta ideia contigo

Uma promoção precisa de conteúdo identificado, decisão atual e controlos que abranjam o caminho real de execução.

Criar conta

Referência: Release engineering · Release management practices 2026-09; scoped GitLab GitHub CodeDeploy and EF Core documentation