Um Portão de qualidade é uma verificação que o trabalho precisa passar antes de avançar. Os Portões fazem com que o critério de 'bom o suficiente para ser entregue' deixe de ser subjetivo e passe a ser algo que o sistema aplica da mesma forma todas as vezes.
Bloqueante e consultivo
Cada Portão é um ou outro, e essa distinção é o cerne do design:
- Bloqueante — a falha impede o avanço da tarefa. O trabalho não prossegue até que seja aprovado ou um humano faça a sobrescrita.
- Consultivo — a falha é registrada como uma observação e anexada ao pull request, mas a tarefa continua.
Comece com configurações consultivas. Observe o que um Portão sinaliza em trabalhos reais por uma ou duas semanas e, então, promova os que se mostrarem eficazes para o modo bloqueante. Um Portão que bloqueia desde o primeiro dia, sem ajustes prévios, geralmente leva as pessoas a contorná-lo.
O que os Portões podem verificar
Os Portões operam na fase de verificação e podem cobrir:
- a execução bem-sucedida da sua própria suíte de testes
- limites de cobertura de código
- ferramentas de linting e análise estática
- varreduras de segurança
- testes em navegadores em um ambiente de pré-visualização em execução
- evidências de provedores externos anexadas ao pull request
O Portão mais valioso quase sempre é a sua suíte de testes existente, pois ela já codifica o que sua equipe considera importante.
Onde um Portão pode interromper o trabalho
Os Portões são executados durante a verificação, após o agente de desenvolvimento concluir seu trabalho e antes da Revisão. Uma falha bloqueante devolve a tarefa para retrabalho, em vez de gerar um pull request que seria rejeitado.
Essa ordem é intencional: é mais barato falhar durante a execução do que falhar na sua tela.
Políticas
Os Portões são agrupados em políticas, que são o que você realmente associa aos projetos. Uma política é um conjunto nomeado de Portões com suas configurações bloqueantes/consultivas, permitindo que você tenha uma norma padrão para serviços de produção e outra mais flexível para ferramentas internas.
As políticas são versionadas. Você publica uma alteração e pode reverter para uma versão anterior caso um novo Portão se revele muito rigoroso.
Sobrescritas
Um Portão bloqueante pode ser sobrescrito por um humano com autoridade para isso. A sobrescrita é registrada — quem, quando e em qual contexto.
Esse registro é o objetivo. Um Portão que ninguém pode sobrescrever vira algo que as pessoas contornam; um Portão que qualquer um pode sobrescrever silenciosamente não é um Portão de verdade. Uma sobrescrita que deixa rastro é ao mesmo tempo útil e responsável.
O que os Portões não fazem
Os Portões verificam propriedades. Eles não avaliam se o trabalho resolve o problema certo — isso cabe aos critérios de aceitação na especificação e à própria Revisão.
Uma alteração pode passar por todos os Portões e ainda assim ser a mudança errada.