Um ambiente de pré-recebimento do GitHub Enterprise Server é um ambiente chroot do Linux. Como são executados em todos os eventos de push, os hooks pre-receive devem ser rápidos e leves. Em geral, o ambiente necessário para tais verificações é mínimo.
O GitHub Enterprise Server fornece um ambiente padrão que inclui estes pacotes: awk, bash, coreutils, curl, find, gnupg, grep, jq e sed.
Se você tiver um requisito específico que não é atendido por esse ambiente, como suporte para uma linguagem específica, crie e carregue seu ambiente chroot do Linux de 64 bits.
A versão do Git usada no ambiente de gancho de pré-recebimento deve ser pelo menos 2.11 ou, se você estiver usando libgit2, você deve usar pelo menos a versão 0.18.
Se você estiver usando outra implementação do Git, ela deverá dar suporte a caminhos relativos no arquivo info/alternates.
Criar um ambiente de hook pre-receive usando o Docker
Você pode usar uma ferramenta de gerenciamento de contêineres do Linux para criar um ambiente de hook pre-receive. Este exemplo usa o Debian Linux e o Docker.
- 
Verifique se o Docker está instalado localmente. 
- 
Crie o arquivo Dockerfile.debianque contém estas informações:FROM --platform=linux/amd64 debian:stable RUN apt-get update && apt-get install -y git bash curl RUN rm -fr /etc/localtime /usr/share/zoneinfo/localtime
Note
A imagem de Debian inclui alguns links simbólicos por padrão, que, se não forem removidos, poderão causar erros durante a execução de scripts no ambiente personalizado. Os links simbólicos são removidos na última linha do exemplo acima.
- 
No diretório de trabalho que contém Dockerfile.debian, compile uma imagem:$ docker build -f Dockerfile.debian -t pre-receive.debian . > [+] Building 0.6s (6/6) FINISHED docker:desktop-linux > => [internal] load build definition from Dockerfile.debian > => [1/2] FROM docker.io/library/debian:latest@sha256:80dd3c3b9c6cecb9f1667e9290b3bc61b78c2678c02cbdae5f0fea92cc6 > => [2/2] RUN apt-get update && apt-get install -y git bash curl > => exporting to image > => => exporting layers > => => writing image sha256:b57af4e24082f3a30a34c0fe652a336444a3608f76833f5c5fdaf4d81d20c3cc > => => naming to docker.io/library/pre-receive.debian
- 
Crie um contêiner: docker create --name pre-receive.debian pre-receive.debian /bin/true
- 
Exporte o contêiner do Docker para um arquivo tarcompactado emgzip:docker export pre-receive.debian | gzip > debian.tar.gzEste arquivo debian.tar.gzestá pronto para ser carregado no dispositivo do GitHub Enterprise Server.
Criar um ambiente de hook pre-receive usando chroot
- 
Crie um ambiente chrootdo Linux.
- 
Crie um arquivo tarcompactado emgzipdo diretóriochroot.cd /path/to/chroot tar -czf /path/to/pre-receive-environment.tar.gz .Note - Não inclua os principais caminhos de diretório de arquivos no arquivo TAR, como /path/to/chroot.
- /bin/shprecisa existir e ser executável, como o ponto de entrada no ambiente chroot.
- Ao contrário dos chroots tradicionais, o diretório devnão é necessário para o ambiente chroot em ganchos de pré-recebimento.
 
- Não inclua os principais caminhos de diretório de arquivos no arquivo TAR, como 
Para saber mais sobre como criar um ambiente chroot, confira Chroot no Wiki do Debian ou BasicChroot no Wiki de Ajuda da Comunidade do Ubuntu.
Fazer upload de um ambiente de hook pre-receive no GitHub Enterprise Server
- 
No canto superior à direita de GitHub Enterprise Server, clique na sua foto do perfil e clique em Configurações da empresa.  
- 
Do lado esquerdo da página, na barra lateral da conta empresarial, clique em Configurações. 
- 
Em " Configurações", clique em Ganchos. 
- 
Clique em Gerenciar ambientes. 
- 
Clique em Adicionar ambiente. 
- 
No campo "Nome do ambiente", insira o nome desejado. 
- 
No campo "Carregar ambiente de uma URL", insira a URL do arquivo *.tar.gzque contém seu ambiente.
- 
Clique em Adicionar ambiente. 
Fazer upload de um ambiente de hook pre-receive via shell administrativo
- 
Carregue um arquivo *.tar.gzlegível que contém seu ambiente em um host da Web e copie a URL ou transfira o arquivo para o dispositivo do GitHub Enterprise Server por meio descp. Quandoscpé usado, talvez seja necessário ajustar as permissões do arquivo*.tar.gzpara que o arquivo seja legível.
- 
Conecte-se ao shell administrativo. 
- 
Use o comando ghe-hook-env-createe digite o nome desejado para o ambiente como o primeiro argumento e o caminho local completo ou a URL de um arquivo*.tar.gzque contém o ambiente como o segundo argumento.admin@ghe-host:~$ ghe-hook-env-create DebianTestEnv /home/admin/debian.tar.gz > Pre-receive hook environment 'DebianTestEnv' (2) has been created.