Skip to main content

Esta versão do GitHub Enterprise Server foi descontinuada em 2024-12-19. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

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.

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.

  1. Verifique se o Docker está instalado localmente.

  2. Crie o arquivo Dockerfile.debian que 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.

  1. 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 
    
  2. Crie um contêiner:

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

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

    Este arquivo debian.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 .
    

    Note

    • 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 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

  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 mostrado quando você clica no foto de perfil no GitHub Enterprise Server. A opção "Enterprise settings" está contornada.

  2. Do lado esquerdo da página, na barra lateral da conta empresarial, 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 DebianTestEnv /home/admin/debian.tar.gz
    > Pre-receive hook environment 'DebianTestEnv' (2) has been created.