Esta versão do GitHub Enterprise foi descontinuada em 2021-06-09. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, melhorar a segurança e novos recursos, upgrade to the latest version of GitHub Enterprise. Para ajuda com a atualização, contact GitHub Enterprise support.

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

  1. Garanta que o Docker está instalado localmente.

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

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

    $ 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

  1. Crie um ambiente Linux chroot.

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

    $ 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.

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

  1. Acesse a conta corporativa visitando https://HOSTNAME/enterprises/ENTERPRISE-NAME, substituindo HOSTNAME pelo nome de host da sua instância e ENTERPRISE-NAME pelo nome da conta da sua empresa.

  2. Na barra lateral da conta corporativa, clique em Settings. Aba de configurações na barra lateral de contas corporativas

  3. Em "Configurações de ", clique em Hooks. Aba Hooks na barra lateral de configurações da conta corporativa

  4. Clique em Manage environments (Gerenciar ambientes). Gerenciar ambientes

  5. Clique em Add environments (Adicionar ambientes). Adicionar ambiente

  6. Digite o nome desejado no campo Environment name (Nome do ambiente). Nome do ambiente

  7. Informe a URL do arquivo *.tar.gz que contém o ambiente. Fazer upload de um ambiente a partir da URL

  8. Clique em Add environments (Adicionar ambientes). Botão Adicionar ambiente

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

  1. 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 via scp. Ao usar o scp, você deve ajustar as permissões do arquivo *.tar.gz para que ele seja legível.

  2. Conecte-se ao shell administrativo.

  3. 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.