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.3
que 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
tar
compactado porgzip
:$ docker export pre-receive.alpine-3.3 | gzip > alpine-3.3.tar.gz
O arquivo
alpine-3.3.tar.gz
está 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
tar
do diretóriochroot
compactado 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/sh
deve existir e ser executável, como o ponto de entrada no ambiente chroot.- Ao contrário de chroots tradicionais, o diretório
dev
nã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
, substituindoHOSTNAME
pelo nome de host da sua instância eENTERPRISE-NAME
pelo 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.gz
que 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.gz
que 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.gz
para que ele seja legível. -
Conecte-se ao shell administrativo.
-
Use o comando
ghe-hook-env-create
e 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.gz
que 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.