Sobre hooks pre-receive
Quando ocorre um push, cada script é executado em um ambiente isolado e pode executar verificações no conteúdo do push. Os scripts farão o push ser aceito se o status de saída for 0, ou farão o push ser rejeitado se o status de saída for diferente de zero.
Use os hooks pre-receive para cumprir com as regras corporativas, aplicar a conformidade regulamentar e evitar certos erros comuns.
Exemplos de uso dos hooks pre-receive:
- Exigir que as mensagens de commit sigam determinado padrão ou formato, como incluir um número de ticket válido ou ter um tamanho especificado;
- Bloquear um branch ou repositório rejeitando todos os pushes;
- Evitar a inclusão de dados confidenciais no repositório bloqueando palavras-chave, padrões ou tipos de arquivos.
- Evitar que o autor da pull request faça merge em suas próprias alterações.
Veja exemplos de ganchos de pré-recebimento do GitHub Enterprise Server no repositório github/platform-samples
.
Fluxos de trabalho e impacto no desempenho
O impacto para os desenvolvedores e seus fluxos de trabalho pode ser significativo e deve ser considerado atentamente. Hooks pre-receive baseados nas demandas corporativas e implementados com cuidado trarão mais benefícios para a organização como um todo.
Os ganchos de pré-recebimento podem ter efeitos indesejados no desempenho do sua instância do GitHub Enterprise Server e devem ser implementados e analisados com atenção.
Devido ao risco de falha e ao impacto no desempenho para todos os usuários da instância, recomendamos seguir as instruções abaixo.
- Evite solicitações de API em um gancho de recebimento prévio. Especificamente, desencorajamos fortemente que faça solicitações a serviços externos, o que pode demorar mais tempo e agravar o impacto no desempenho.
- Evite operações Git com execução prolongada em um gancho de recebimento prévio. Se o seu gancho de recebimento prévio executar operações Git em repositórios grandes ou ocupados, o Git e o desempenho geral da instância poderão ser afetados negativamente.
Observação: para evitar a rejeição de um push devido a um tempo limite, todos os ganchos de recebimento prévio agrupados devem ser executados em menos de cinco segundos.