Skip to main content

Sobre hooks pre-receive

Hooks pre-receive são scripts executados no dispositivo do GitHub Enterprise Server que você pode usar para implementar verificações de qualidade.

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 hooks de pré-recebimento combinados devem ser executados em menos de cinco segundos.

Escolhendo entre regras de push e hooks de pré-recebimento

Você pode usar regras de push e hooks de pré-recebimento para controlar de quais alterações os usuários podem efetuar push para seu repositório. Ambos ajudam você a impor políticas, mas funcionam de maneiras diferentes e são projetados para casos de uso diferentes.

As regras de push são uma maneira interna de impor políticas comuns entre repositórios. Você pode usá-las para bloquear pushes que não atendem a condições específicas, como atualizações de arquivos e caminhos específicos, tamanho do arquivo ou tipo de arquivo. Você pode gerenciar as regras de push por meio da interface do usuário ou da API. Como são um tipo de conjuntos de regras de repositório, as regras de push dão suporte a logs de auditoria e podem ser usadas com o modo de avaliação para visualizar alterações ou podem ser ignoradas quando necessário.

Use regras de push para facilitar:

  • A imposição de políticas padrão sem escrever scripts.
  • A aplicação de políticas de forma consistente entre organizações e repositórios.
  • O gerenciamento de regras por meio da interface do usuário e das APIs do GitHub.
  • O uso de recursos nativos do GitHub, como logs de auditoria, listas de bypass e insights de regras.