Blog

Anatomia de uma entrega: do merge ao ar

O código ficar pronto é o meio do caminho. Acompanhamos uma mudança pequena desde o pedido até o momento em que ela está funcionando na tela do cliente — e mostramos cada portão no meio.

Existe um momento traiçoeiro em todo projeto de software: aquele em que alguém diz “está pronto” e ainda não está no ar. Entre um e outro cabem uma revisão esquecida, uma variável que ninguém configurou e uma publicação feita à mão numa sexta-feira à noite.

A esteira existe para que esse intervalo não dependa de ninguém lembrar de nada.

O ponto de partida

Vamos acompanhar uma mudança fictícia, mas bem típica: o cliente quer que o formulário de contato aceite telefone com DDI. A issue diz o que precisa ser verdade no fim — o campo aceita números de outros países e continua recusando o que não é telefone.

Um agente pega a issue, trabalha numa cópia isolada do repositório e entrega um merge request para a branch de integração. Até aqui, nada foi publicado. E nada será, sem passar pelo resto.

Os portões, em ordem

Todo merge request atravessa a mesma sequência. A configuração é parecida com esta:

stages: [verificar, revisar, publicar, conferir]

tipos-e-testes:
  stage: verificar
  script:
    - bun install --frozen-lockfile
    - bun run check
    - bun test

segredos:
  stage: verificar
  script:
    - gitleaks detect --no-banner

publicar:
  stage: publicar
  rules:
    - if: $CI_COMMIT_BRANCH == "staging"
  script:
    - ./deploy.sh

conferir:
  stage: conferir
  script:
    - ./smoke.sh

Cada etapa tem um papel diferente, e nenhuma substitui a outra:

Etapa O que ela garante
Verificar o código compila, os testes passam e nenhum segredo vazou
Revisar alguém que não escreveu o código confirma que ele entrega o pedido
Publicar a versão aprovada vai ao ar sem intervenção manual
Conferir o que está no ar é, de fato, a versão nova — e responde

A revisão não é do mesmo agente

O agente que escreveu o código não aprova o próprio trabalho. A revisão é feita por outro agente, com outras instruções, cujo único objetivo é encontrar o que não está certo: critério de aceite pela metade, comportamento quebrado, falha de segurança.

Se a revisão reprova, o trabalho volta com o motivo escrito. Se aprova, o merge acontece — e só então a publicação começa.

Publicado não é o mesmo que no ar

Esse é o detalhe que a maioria das esteiras ignora. O comando de publicação terminar sem erro não prova nada. Pode ter subido a versão antiga de novo. Pode ter subido a nova e ela não estar respondendo.

Por isso a última etapa confere o efeito: o serviço que está rodando foi de fato substituído, e a versão nova responde como deveria. Se não, a esteira fica vermelha e a gente fica sabendo antes do cliente.

Pipeline verde não prova efeito. O efeito se prova olhando para o efeito.

Em quanto tempo?

Numa mudança pequena como a do telefone, a esteira inteira leva poucos minutos. O número exato importa menos do que o fato de ser sempre o mesmo caminho: a mudança de uma linha e a de mil linhas atravessam os mesmos portões.

É isso que permite entregar muitas vezes por dia sem que nenhuma delas seja um salto no escuro.

Escrito pela Kabran