Skip to main content

Criar um ambiente de hook pre-receive

Para executar hooks pre-receive, use o ambiente pre-receive padrão ou crie um ambiente personalizado.

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.

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.

  1. Verifique se o Docker está instalado localmente.

  2. Crie o arquivo Dockerfile.alpine que contém estas informações:

    FROM alpine:latest
    RUN apk add --no-cache git bash
    
  3. No diretório de trabalho que contém Dockerfile.alpine, compile uma imagem:

    $ docker build -f Dockerfile.alpine -t pre-receive.alpine .
    > Sending build context to Docker daemon 12.29 kB
    > Step 1 : FROM alpine:latest
    >  ---> 8944964f99f4
    > Step 2 : RUN apk add --no-cache git bash
    >  ---> Using cache
    >  ---> 0250ab3be9c5
    > Successfully built 0250ab3be9c5
    
  4. Crie um contêiner:

    docker create --name pre-receive.alpine pre-receive.alpine /bin/true
    
  5. Exporte o contêiner do Docker para um arquivo tar compactado em gzip:

    docker export pre-receive.alpine | gzip > alpine.tar.gz
    

    Este arquivo alpine.tar.gz está pronto para ser carregado no dispositivo do GitHub Enterprise Server.

Criar um ambiente de hook pre-receive usando chroot

  1. Crie um ambiente chroot do Linux.

  2. Crie um arquivo tar compactado em gzip do diretório chroot.

    cd /path/to/chroot
    tar -czf /path/to/pre-receive-environment.tar.gz .
    

    Observações:

    • Não inclua os principais caminhos de diretório de arquivos no arquivo TAR, como /path/to/chroot.
    • /bin/sh precisa existir e ser executável, como o ponto de entrada no ambiente chroot.
    • Ao contrário dos chroots tradicionais, o diretório dev não é necessário para o ambiente chroot em ganchos de pré-recebimento.

Para obter mais informações sobre como criar um ambiente chroot, confira "Chroot" no wiki do Debian, "BasicChroot" no wiki de Ajuda da Comunidade do Ubuntu ou "Como instalar o Alpine Linux em um chroot" no wiki do Alpine Linux.

Fazer upload de um ambiente de hook pre-receive no GitHub Enterprise Server

  1. No canto superior à direita de GitHub Enterprise Server, clique na sua foto do perfil e clique em Configurações da empresa.

    Captura de tela do menu suspenso que aparece quando você clica na foto de perfil no GitHub Enterprise Server. A opção "Configurações da empresa" está realçada em um contorno laranja escuro.

  2. Na barra lateral da conta corporativa, clique em Configurações.

  3. Em " Configurações", clique em Ganchos.

  4. Clique em Gerenciar ambientes.

  5. Clique em Adicionar ambiente.

  6. No campo "Nome do ambiente", insira o nome desejado.

  7. No campo "Carregar ambiente de uma URL", insira a URL do arquivo *.tar.gz que contém seu ambiente.

  8. Clique em Adicionar ambiente.

Fazer upload de um ambiente de hook pre-receive via shell administrativo

  1. Carregue um arquivo *.tar.gz legí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 de scp. Quando scp é usado, talvez seja necessário ajustar as permissões do arquivo *.tar.gz para que o arquivo seja legível.

  2. Conecte-se ao shell administrativo.

  3. Use o comando ghe-hook-env-create e digite o nome desejado para o ambiente como o primeiro argumento e o caminho local completo ou a URL de um arquivo *.tar.gz que contém o ambiente como o segundo argumento.

    admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine.tar.gz
    > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.