Partilhar via


Configurar o GitHub Enterprise Server na solução VMware do Azure

Neste artigo, saiba como configurar o GitHub Enterprise Server, a versão "local" do GitHub.com, na nuvem privada do Azure VMware Solution. O cenário abrange uma instância do GitHub Enterprise Server que pode atender até 3.000 desenvolvedores executando até 25 trabalhos por minuto no GitHub Actions. Ele inclui a configuração de (no momento da escrita) recursos de visualização , como Ações do GitHub. Para personalizar a configuração de acordo com suas necessidades específicas, revise os requisitos listados em Instalando o GitHub Enterprise Server no VMware.

Antes de começar

O GitHub Enterprise Server requer uma chave de licença válida. Você pode se inscrever para obter uma licença de avaliação. Se você está procurando estender os recursos do GitHub Enterprise Server por meio de uma integração, verifique se você se qualifica para uma licença de desenvolvedor gratuita de cinco lugares. Solicite esta licença através do Programa de Parceiros do GitHub.

Instalar o GitHub Enterprise Server no VMware

  1. Baixe a versão atual do GitHub Enterprise Server for VMware ESXi/vSphere (OVA) e implante o modelo OVA que você baixou.

    Captura de tela mostrando as opções de instalação do GitHub Enterprise Server no VMware.

    Captura de tela mostrando a opção de menu Implantar o modelo OVA.

  2. Forneça um nome reconhecível para sua nova máquina virtual, como GitHubEnterpriseServer. Você não precisa incluir os detalhes da versão no nome da VM, pois esses detalhes se tornam obsoletos quando a instância é atualizada.

  3. Selecione todos os padrões por enquanto (detalhes a serem editados posteriormente) e aguarde a importação do OVA.

  4. Uma vez importado, ajuste a configuração de hardware com base nas suas necessidades. Em nosso cenário de exemplo, precisamos da seguinte configuração.

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

    As suas necessidades podem variar. Consulte as orientações sobre considerações de hardware em Instalando o GitHub Enterprise Server no VMware. Consulte também Adicionando recursos de CPU ou memória para o VMware personalizar a configuração de hardware com base na sua situação.

Configurar a instância do GitHub Enterprise Server

Captura de tela da janela Instalar o GitHub Enterprise.

Depois que a máquina virtual (VM) recém-provisionada estiver ligada, configure-a por meio do navegador. Você precisa carregar seu arquivo de licença e definir uma senha do console de gerenciamento. Certifique-se de anotar esta senha em algum lugar seguro.

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

Recomendamos pelo menos seguir os seguintes passos:

  1. Carregue uma chave SSH pública para o console de gerenciamento para que você possa acessar o shell administrativo via SSH.

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

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

  3. Enquanto a instância é reiniciada, configure o armazenamento de blob para Ações do GitHub.

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

    Captura de tela mostrando os detalhes da instância a serem inseridos para provisionar uma conta de Armazenamento de Blob do Azure.

  4. Quando a nova implantação do recurso BlobStorage for concluída, salve a cadeia de conexão (disponível em Chaves de acesso) para usar mais tarde.

  5. Depois que a instância for reiniciada, crie uma nova conta de administrador na instância. Certifique-se de anotar a senha desse usuário também.

    Captura de tela mostrando a criação de conta de administrador para o GitHub Enterprise.

Outras etapas de configuração

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

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

    • Falhas de software (SO ou nível de aplicação)
    • Falhas de hardware (armazenamento, CPU, RAM e assim por diante)
    • Falhas do sistema host de virtualização
    • Rede cortada lógica ou fisicamente
  2. Configure utilitários de backup, fornecendo snapshots versionados para recuperação de desastres, hospedados em disponibilidade separada da instância principal.

  3. Configure o isolamento de subdomínio, usando um certificado TLS válido, para mitigar scripts entre sites e outras vulnerabilidades relacionadas.

Configurar o executor de ações do GitHub

Neste ponto, você deve ter uma instância do GitHub Enterprise Server em execução, com uma conta de administrador criada. Você também deve ter armazenamento de blob externo que o GitHub Actions usa para persistência.

Crie um lugar para que as Ações do GitHub sejam executadas usando a Solução VMware do Azure.

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

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

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

  3. Selecione o SO convidado que deseja instalar na VM.

    Captura de ecrã a mostrar a família de SO convidado e a versão do SO convidado a instalar na VM.

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

  5. Instale o aplicativo Actions runner , que executa um trabalho a partir de um fluxo de trabalho do GitHub Actions. Identifique e baixe a versão Linux x64 mais atual do executor de ações, seja na página de lançamentos ou executando o seguinte script rápido. Esse script requer que tanto o curl quanto o jq estejam presentes na sua 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 você deve ter um arquivo localmente em sua VM, actions-runner-linux-arm64-*.tar.gz. Extraia este tarball localmente:

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

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

Ativar ações do GitHub

Configure e habilite as Ações do GitHub na instância do GitHub Enterprise Server.

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

  2. Defina uma variável de ambiente que contenha sua cadeia de conexão de armazenamento de Blob.

    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 pré-verificação para instalar mais software exigido pelo Actions no GitHub Enterprise Server.

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

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

    ghe-actions-check -s blob
    

    Você deve ver a saída: O armazenamento de Blob está íntegro.

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

  9. Na barra lateral esquerda, selecione Visão geral da empresa e, em seguida, Políticas, Ações e selecione a opção para habilitar Ações para todas as organizações.

  10. Configure seu corredor na guia Corredores auto-hospedados. Selecione Adicionar novo e, em seguida, Novo corredor na lista suspensa. É apresentado um conjunto de comandos para executar.

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

    ./config.sh --url https://10.1.1.26/enterprises/octo-org --token AAAAAA5RHF34QLYBDCHWLJC7L73MA
    
  12. Copie o config.sh comando e cole-o em uma sessão no seu executor de Ações (criado anteriormente).

    Captura de tela mostrando o registro e as configurações do corredor do GitHub Actions.

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

    Gorjeta

    Para disponibilizar esse corredor para organizações em sua empresa, edite o acesso à organização. Você pode limitar o acesso a um subconjunto de organizações e até mesmo a repositórios específicos.

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

(Opcional) Configurar o GitHub Connect

Embora esta etapa seja opcional, recomendamos se você planeja consumir ações de código aberto disponíveis no GitHub.com. Ele permite que você desenvolva o trabalho de outras pessoas, fazendo referência a essas ações reutilizáveis em seus fluxos de trabalho.

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

Quando o GitHub Connect estiver habilitado, selecione a opção Servidor para usar ações do GitHub.com em execuções de fluxo de trabalho.

Captura de tela do servidor pode usar ações de GitHub.com no fluxo de trabalho executa Habilitado.

Configurar e executar o seu primeiro fluxo de trabalho

Agora que o Actions e o GitHub Connect estão configurados, vamos colocar todo esse trabalho em bom uso. Aqui está um exemplo de fluxo de trabalho que faz referência ao excelente octokit/request-action, permitindo-nos "roteirizar" o GitHub através de interações usando a API do GitHub, alimentada pelo GitHub Actions.

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

Captura de ecrã de um fluxo de trabalho de exemplo.

Nota

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

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

Captura de ecrã de um fluxo de trabalho de exemplo alternativo.

  1. Navegue até um repositório em 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 seu 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 corredor.

Se tudo correu bem-sucedido, você deve ver um novo problema no seu repo, intitulado "Olá mundo".

Captura de tela do problema Hello world no GitHub criado pelo github-actions.

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

Este artigo configurou uma nova instância do GitHub Enterprise Server, o equivalente auto-hospedado do GitHub.com, sobre sua nuvem privada do Azure VMware Solution. A instância inclui suporte para Ações do GitHub e usa o Armazenamento de Blob do Azure para persistência de logs e artefatos. Mas estamos apenas arranhando a superfície do que você pode fazer com as Ações do GitHub. Confira a lista de Ações no Marketplace do GitHub ou crie a sua própria.

Próximos passos

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