Compartilhar via


Configurar o GitHub Enterprise Server na Solução VMware no Azure

Neste artigo, saiba como configurar o GitHub Enterprise Server, a versão "local" do GitHub.com, na sua nuvem privada da Solução VMware no Azure. O cenário trata de uma instância do GitHub Enterprise Server que pode atender até 3 mil desenvolvedores executando até 25 trabalhos por minuto no GitHub Actions. Ele inclui a configuração (até o momento da elaboração deste texto) de versões prévias dos recursos, como GitHub Actions. Para personalizar a instalação conforme suas necessidades específicas, examine os requisitos listados em Como instalar o GitHub Enterprise Server no VMware.

Antes de começar

O GitHub Enterprise Server exige uma chave de licença válida. Você pode se inscrever em uma licença de avaliação. Se você pretende estender as funcionalidades do GitHub Enterprise Server por uma integração, tente se qualificar para uma licença de desenvolvedor de cinco estações gratuitas. Inscreva-se para esta licença por meio do Programa de Parceiros do GitHub.

Instalar o GitHub Enterprise Server no VMware

  1. Baixe a versão atual do GitHub Enterprise Server para VMware ESXi/VSPHERE (OVA), e implante o modelo OVA baixado.

    Captura de tela que mostra as opções de instalação do GitHub Enterprise Server na VMware.

    Captura de tela que mostra a opção de menu Implantar o Modelo OVA.

  2. Forneça um nome reconhecível para a nova máquina virtual, como GitHubEnterpriseServer. Não é necessário incluir os detalhes da versão no nome da VM, pois eles ficam obsoletos quando a instância é atualizada.

  3. Por enquanto, selecione todos os padrões (editaremos os detalhes mais adiante) e aguarde até que o OVA seja importado.

  4. Após a importação, ajuste a configuração de hardware de acordo com suas necessidades. No nosso cenário de exemplo, precisaremos da configuração a seguir.

    Recurso Configuração padrão Configuração Padrão + "Recursos Beta" (Actions)
    vCPUs 4 8
    Memória 32 GB 61 GB
    Armazenamento anexado 250 GB 300 GB
    Armazenamento raiz 200 GB 200 GB

    Suas necessidades podem variar. Confira as diretrizes sobre considerações de hardware em Como instalar o GitHub Enterprise Server no VMware. Consulte também Adicionar recursos de CPU ou memória para o VMware para personalizar a configuração de hardware de acordo com a sua situação.

Configurar a instância do GitHub Enterprise Server

Captura de tela da janela Instalar GitHub Enterprise.

Depois que a máquina virtual (VM) recém-provisionada for ligada, configure-a pelo seu navegador. Você precisa carregar o arquivo de licença e definir uma senha de console de gerenciamento. Anote essa senha em algum lugar seguro.

Captura de tela da tela de acesso de SSH do GitHub Enterprise para adicionar uma nova chave SSH.

É recomendado executar, pelo menos, as seguintes etapas:

  1. Carregue uma chave SSH pública no console de gerenciamento para poder acessar o shell administrativo por SSH.

  2. Configure o TLS na sua instância para poder usar um certificado assinado por uma autoridade de certificação confiável. Aplique suas configurações.

    Captura de tela que mostra as configurações que estão sendo aplicadas à sua instância.

  3. Enquanto a instância é reiniciada, configure o armazenamento de blob para o GitHub Actions.

    O armazenamento de blobs externo é necessário para habilitar o GitHub Actions no GitHub Enterprise Server (no momento, disponível como um recurso "beta"). As ações usam esse armazenamento de blobs externo para armazenar artefatos e logs. O Actions no GitHub Enterprise Server dá suporte ao Armazenamento de Blobs do Azure como provedor de armazenamento (e alguns outros). Você precisa criar uma nova conta de armazenamento do Azure com um tipo de conta de armazenamento do BlobStorage.

    Captura de tela que mostra os detalhes da instância a inserir para provisionar uma conta de Armazenamento de Blobs do Azure.

  4. Depois que a nova implantação do recurso BlobStorage tiver sido concluída, salve a cadeia de conexão (disponível nas chaves de acesso) para usar posteriormente.

  5. Quando a instância for reiniciada, crie uma conta de administrador nela. Anote a senha desse usuário também.

    Captura de tela que mostra a página Criar conta de administrador para o GitHub Enterprise.

Outras etapas de configuração

Para proteger a instância para uso de produção, as seguintes etapas de configuração opcionais são recomendadas:

  1. Configure a alta disponibilidade para proteção em relação a:

    • Falhas de software (no nível do SO ou do aplicativo)
    • Falhas de hardware (armazenamento, CPU, RAM etc)
    • Falhas do sistema do host de virtualização
    • Rede danificada logicamente ou fisicamente
  2. Configure backup-utilities fornecendo instantâneos com controle de versão para recuperação de desastre, hospedados em uma disponibilidade separada da instância primária.

  3. Configure o isolamento de subdomínio usando um certificado TLS válido para mitigar o cross-site scripting e outras vulnerabilidades relacionadas.

Configurar o executor do GitHub Actions

Neste momento, é necessário ter uma instância do GitHub Enterprise Server em execução, com uma conta de administrador criada. Também é necessário ter um armazenamento de blobs externo que o GitHub Actions usa para persistência.

Crie algum lugar para o GitHub Actions ser executado usando a Solução VMware no Azure.

  1. Provisione uma nova VM no cluster e baseie-a em uma versão recente do Ubuntu Server.

    Captura de tela que mostra o nome e o local da máquina virtual para provisionar uma nova VM.

  2. Continue pela configuração selecionando o recurso de computação, armazenamento e compatibilidade.

  3. Selecione o sistema operacional convidado que você deseja instalar na VM.

    Captura de tela que mostra a família do SO convidado e a versão do SO convidado a ser instalada na VM.

  4. Depois que a VM for criada, ligue-a e conecte-se com ela por SSH.

  5. Instale o aplicativo executor do Actions, que executa um trabalho de um fluxo de trabalho do GitHub Actions. Identifique a versão mais recente do Linux x64 do executor do Actions e baixe-a pela página de versões ou executando o script rápido a seguir. Esse script exige que o curl e o jq estejam presentes na VM.

    LATEST\_RELEASE\_ASSET\_URL=$( curl https://api.github.com/repos/actions/runner/releases/latest | \
    
    jq -r '.assets | .[] | select(.name | match("actions-runner-linux-arm64")) | .url' )
    
    DOWNLOAD\_URL=$( curl $LATEST\_RELEASE\_ASSET\_URL | \
    
    jq -r '.browser\_download\_url' )
    
    curl -OL $DOWNLOAD\_URL
    

    Agora, deve haver um arquivo local na VM: actions-runner-linux-arm64-*.tar.gz. Extraia esse tarball localmente:

    tar xzf actions-runner-linux-arm64-\*.tar.gz
    

    Essa extração descompacta alguns arquivos localmente, incluindo um script config.sh e run.sh.

Habilitar o GitHub Actions

Configure e habilite o GitHub Actions na instância do GitHub Enterprise Server.

  1. Acessar o shell administrativo da instância do GitHub Enterprise Server por SSH e execute os seguintes comandos:

  2. Defina uma variável de ambiente que contenha a cadeia de conexão do armazenamento de blobs.

    export CONNECTION\_STRING="<your connection string from the blob storage step>"
    
  3. Configure o armazenamento de ações.

    ghe-config secrets.actions.storage.blob-provider azure
    
    ghe-config secrets.actions.storage.azure.connection-string "$CONNECTION\_STRING`      
    
  4. Aplique as configurações.

    ghe-config-apply
    
  5. Execute uma verificação prévia para instalar o software adicional exigido pelas Ações no GitHub Enterprise Server.

    ghe-actions-precheck -p azure -cs "$CONNECTION\_STRING"
    
  6. Habilite as ações e reaplique a configuração.

    ghe-config app.actions.enabled true
    
    ghe-config-apply      
    
  7. Verifique a integridade do armazenamento de blobs.

    ghe-actions-check -s blob
    

    A saída deve ser: O Armazenamento de Blobs está íntegro.

  8. Agora que o GitHub Actions está configurado, habilite-o para os usuários. Entre na sua instância do GitHub Enterprise Server como administrador e selecione no canto superior direito de qualquer página.

  9. Na barra lateral esquerda, selecione Visão geral do Enterprise, depois Políticas, Ações e a opção para habilitar Ações para todas as organizações.

  10. Configure o executor na guia Executores auto-hospedados. Selecione Adicionar novo e depois, Novo executor na lista suspensa. Você recebe um conjunto de comandos a serem executados.

  11. Copie o comando para configurar o executor, por exemplo:

    ./config.sh --url https://10.1.1.26/enterprises/octo-org --token AAAAAA5RHF34QLYBDCHWLJC7L73MA
    
  12. Copie o comando config.sh e cole-o em uma sessão no executor do Actions (já criado).

    Captura de tela que mostra as configurações e o registro do executor do GitHub Actions.

  13. Use o comando ./run.sh para executar o executor:

    Dica

    Para disponibilizar esse executor às organizações da empresa, edite o acesso dele à organização. Você pode limitar o acesso a um subconjunto de organizações e até a repositórios específicos.

    Captura de tela de como editar o acesso para os executores auto-hospedados.

(Opcional) Configurar o GitHub Connect

Embora essa etapa seja opcional, é recomendável segui-la se você pretende utilizar soluções de código aberto disponíveis no GitHub.com. Ela permite que você desenvolva o trabalho de outras pessoas referenciando essas ações reutilizáveis em seus fluxos de trabalho.

Para habilitar o GitHub Connect, siga as etapas em Como habilitar o acesso automático às ações do GitHub.com usando o GitHub Connect.

Depois que o GitHub Connect estiver habilitado, selecione a opção Servidor para usar as ações do GitHub.com nas execuções de fluxo de trabalho.

Captura de tela do Servidor pode usar ações do GitHub.com em execuções de fluxo de trabalho Habilitadas.

Configurar e executar seu primeiro fluxo de trabalho

Agora que o Actions e o GitHub Connect estão configurados, vamos colocá-los para funcionar. Aqui está um exemplo de fluxo de trabalho que faz referência ao excelente octokit/request-action, permitindo "gerar script" do GitHub por meio de interações usando a API do GitHub, da plataforma GitHub Actions.

Neste fluxo de trabalho básico, use octokit/request-action para abrir um problema no GitHub usando a API.

Captura de tela de um fluxo de trabalho de exemplo.

Observação

O GitHub.com hospeda a ação, mas quando é executada no GitHub Enterprise Server, ela usa automaticamente a API do GitHub Enterprise Server.

Se você não quiser habilitar o GitHub Connect, poderá usar o fluxo de trabalho alternativo a seguir.

Captura de tela de um fluxo de trabalho de exemplo alternativo.

  1. Navegue até um repositório na sua instância e adicione o fluxo de trabalho acima como: .github/workflows/hello-world.yml

    Captura de tela de outro fluxo de trabalho de exemplo alternativo.

  2. Na guia Ações do repositório, aguarde a execução do fluxo de trabalho.

    Captura de tela de um fluxo de trabalho de exemplo executado.

    Você pode vê-lo sendo processado.

    Captura de tela do fluxo de trabalho processado pelo executor.

Se tudo for executado com sucesso, você verá um novo problema no repositório, intitulado "Olá, Mundo".

Captura de tela do problema Olá, Mundo no GitHub criado por github-actions.

Parabéns! Você acabou de concluir seu primeiro fluxo de trabalho do Actions no GitHub Enterprise Server, em execução na nuvem privada da Solução VMware no Azure.

Este artigo trata da configuração de uma nova instância do GitHub Enterprise Server, o equivalente auto-hospedado do GitHub.com, com base na nuvem privada da Solução VMware no Azure. A instância inclui suporte para o GitHub Actions e usa o Armazenamento de Blobs do Azure para persistência de logs e artefatos. Mas isso é só uma pequena amostra de tudo que você pode fazer com o GitHub Actions. Confira a lista de Ações no Marketplace do GitHub ou crie sua ação.

Próximas etapas

Agora que você abordou a configuração do GitHub Enterprise Server na sua nuvem privada da Solução VMware no Azure, saiba mais sobre: