Um ambiente pre-receive para o GitHub Enterprise Server é um ambiente Linux chroot. 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 os seguintes pacotes: awk,  bash, coreutils, curl, find, gnupg, grep, jq, sed.
Se você tiver algum requisito específico não atendido por esse ambiente, como suporte a determinado idioma, é possível criar e fazer upload do seu próprio ambiente Linux chroot de 64 bits.
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 Alpine Linux e o Docker.
- 
Garanta que o Docker está instalado localmente. 
- 
Crie o arquivo Dockerfile.alpine-3.3que contém estas informações:FROM gliderlabs/alpine:3.3 RUN apk add --no-cache git bash
- 
No diretório que contém Dockerfile.alpine-3.3, crie uma imagem:$ docker build -f Dockerfile.alpine-3.3 -t pre-receive.alpine-3.3 . > Sending build context to Docker daemon 12.29 kB > Step 1 : FROM gliderlabs/alpine:3.3 > ---> 8944964f99f4 > Step 2 : RUN apk add --no-cache git bash > ---> Using cache > ---> 0250ab3be9c5 > Successfully built 0250ab3be9c5
- 
Crie um contêiner: $ docker create --name pre-receive.alpine-3.3 pre-receive.alpine-3.3 /bin/true
- 
Exporte o contêiner Docker para um arquivo tarcompactado porgzip:$ docker export pre-receive.alpine-3.3 | gzip > alpine-3.3.tar.gzO arquivo alpine-3.3.tar.gzestá pronto para o upload no appliance do GitHub Enterprise Server.
Criar um ambiente de hook pre-receive usando chroot
- 
Crie um ambiente Linux chroot.
- 
Crie um arquivo tardo diretóriochrootcompactado em umgzip.$ cd /path/to/chroot $ tar -czf /path/to/pre-receive-environment.tar.gz .Notas: - Não inclua caminhos do diretório principal de arquivos dentro do arquivo tar, como /path/to/chroot.
- /bin/shdeve existir e ser executável, como o ponto de entrada no ambiente chroot.
- Ao contrário de chroots tradicionais, o diretório devnão é exigido pelo ambiente chroot para hooks pre-receive.
 
- Não inclua caminhos do diretório principal de arquivos dentro do arquivo tar, como 
Para obter mais informações sobre como criar um ambiente chroot, consulte "Chroot" na Debian Wiki, "BasicChroot" na Ubuntu Community Help Wiki ou "Instalar Alpine Linux em chroot" na Alpine Linux Wiki.
Fazer upload de um ambiente de hook pre-receive no GitHub Enterprise Server
- 
Acesse a conta corporativa visitando https://HOSTNAME/enterprises/ENTERPRISE-NAME, substituindoHOSTNAMEpelo nome de host da sua instância eENTERPRISE-NAMEpelo nome da conta da sua empresa.
- 
Na barra lateral da conta corporativa, clique em Settings.  
- 
Em "Configurações de ", clique em Hooks.  
- 
Clique em Manage environments (Gerenciar ambientes).  
- 
Clique em Add environments (Adicionar ambientes).  
- 
Digite o nome desejado no campo Environment name (Nome do ambiente).  
- 
Informe a URL do arquivo *.tar.gzque contém o ambiente. 
- 
Clique em Add environments (Adicionar ambientes).  
Fazer upload de um ambiente de hook pre-receive via shell administrativo
- 
Faça upload do arquivo legível *.tar.gzque contém o seu ambiente para um host na web e copie a URL, ou transfira o arquivo para o appliance do GitHub Enterprise Server viascp. Ao usar oscp, você deve ajustar as permissões do arquivo*.tar.gzpara que ele seja legível.
- 
Conecte-se ao shell administrativo. 
- 
Use o comando ghe-hook-env-createe digite o nome que você deseja para o ambiente como o primeiro argumento. Em seguida, informe o caminho local completo ou a URL do arquivo*.tar.gzque contém seu ambiente como segundo argumento.admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine-3.3.tar.gz > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.