Skip to main content

Esta versão do GitHub Enterprise será descontinuada em 2022-09-28. 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. 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.

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-3.3 que contém estas informações:

    FROM gliderlabs/alpine:3.3
    RUN apk add --no-cache git bash
    
  3. No diretório de trabalho que contém Dockerfile.alpine-3.3, compile 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 do Docker para um arquivo tar compactado em gzip:

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

    Este arquivo alpine-3.3.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 foto do perfil e clique em Configurações da empresa. "Configurações da empresa" no menu suspenso da foto do perfil em GitHub Enterprise Server 1. Na barra lateral da conta corporativa, clique em Configurações. Guia Configurações na barra lateral das contas corporativas 1. Em " Configurações", clique em Ganchos. Guia Ganchos na barra lateral das configurações da conta corporativa
  2. Clique em Gerenciar ambientes. Gerenciar ambientes
  3. Clique em Adicionar ambiente. Adicionar ambiente
  4. Insira o nome desejado no campo Nome do ambiente. Nome do ambiente
  5. Insira a URL do arquivo *.tar.gz que contém seu ambiente. Carregar um ambiente por meio da URL
  6. Clique em Adicionar ambiente. Botão 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-3.3.tar.gz
    > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.