Organizando o fluxo de desenvolvimento: Ajustes para garantir a movimentação correta entre novas features entre as branches dos ambientes

No Azure DevOps, a restrição direta de que uma branch X só pode receber PR se já passou por outra branch Y (por exemplo: PR de hotfix indo direto para prod, mas exigindo que primeiro passe por desenv) não é uma configuração nativa simples de "marcar uma caixinha".

No entanto, o Azure DevOps possui mecanismos robustos para garantir esse fluxo através de Branch Policies (Políticas de Ramificação), Branch Folders e Build/Validation Pipelines.

Aqui estão as duas principais formas de implementar essa validação:

Abordagem 1: Usando Build Validation com verificação de histórico (Recomendado)

Você pode configurar uma política de validação de compilação/merge que verifica se o commit que está indo para prod já existe na branch desenv.

1.Acesse as Configurações do Repositório:Repositórios.
Branches">
No Azure DevOps, vá em Repos > Branches, localize a sua branch prod, clique nos três pontos (...) e selecione Branch policies.

2.Adicione uma Build Validation:Build Validation.
Role até a seção Build validation e clique no botão + para adicionar uma nova política de build.

3.Crie um Pipeline de Verificação:Pipeline YAML.
Selecione um pipeline (ou crie um novo script YAML) que será executado automaticamente toda vez que um PR for aberto para prod.

4.Adicione o Script de Validação:Script Bash/PowerShell.
No seu pipeline de validação, adicione um comando para checar se a branch de origem contém os commits de desenv ou se o merge já foi feito lá. Por exemplo, no bash:

Bash
# Verifica se a branch desenv é ancestral da branch de origem do PR ou se o commit já existe em desenv
git fetch origin desenv
git merge-base --is-ancestor origin/desenv HEAD || (echo "Erro: O código precisa ser integrado em 'desenv' antes de ir para 'prod'." && exit 1)
Como verificar se funcionou: Tente abrir um PR direto de uma branch de feature para prod sem passar por desenv. O pipeline de validação falhará e bloqueará o botão de "Complete".

Abordagem 2: Fluxo de Branches em Cascata (Git Flow / Branch Control)

Se o seu cenário for o Git Flow tradicional (onde correções urgentes em prod depois precisam voltar para desenv ou vice-versa), a melhor prática de arquitetura do Azure DevOps é usar restrições de permissão ou a política de Branch Control.

  • Bloqueio de Merge Direto: Você pode restringir quem pode dar merge em prod através de permissões avançadas na branch (negando a permissão Contribute ou Bypass policies para desenvolvedores comuns, permitindo apenas para Tech Leads/Service Accounts).

  • Branch Folders: Organizar as branches por pastas (release/*, features/*) ajuda a aplicar políticas em lote.

Comentários

Postagens mais visitadas deste blog

Procêmica: A Linguagem Silenciosa do Espaço

Roadmap do Programador Iniciante: Do Zero ao Primeiro Código

Usenet: A Rede de Usuários Que Plantou as Sementes da Internet Moderna