Criar um ambiente de hook pre-receive
Para executar hooks pre-receive, use o ambiente pre-receive padrão ou crie um ambiente personalizado.
Neste artigo
- Criar um ambiente de hook pre-receive usando o Docker
- Criar um ambiente de hook pre-receive usando chroot
- Fazer upload de um ambiente de hook pre-receive no GitHub Enterprise Server
- Fazer upload de um ambiente de hook pre-receive via shell administrativo
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.
-
Ensure Docker is installed locally.
-
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 . > Enviar contexto de criação para o Docker daemon 12.29 kB > Step 1 : FROM gliderlabs/alpine:3.3 > ---> 8944964f99f4 > Step 2 : RUN apk add --no-cache git bash > ---> Usar cache > ---> 0250ab3be9c5 > Criado com êxito 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 .
Observações:
- Do not include leading directory paths of files within the tar archive, such as
/path/to/chroot
. /bin/sh
must exist and be executable, as the entry point into the chroot environment.- Unlike traditional chroots, the
dev
directory is not required by the chroot environment for pre-receive hooks.
- Do not include leading directory paths of files within the tar archive, such as
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
-
In the upper-right corner of any page, click .
-
In the left sidebar, click Business.
-
Under your business account's name, click Settings.
-
Na barra lateral esquerda, 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.