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

Neste artigo, aprenda como configurar o GitHub Enterprise Server, a versão "on-premises" do GitHub.com, na sua cloud privada Azure VMware Solution. O cenário abrange uma instância do GitHub Enterprise Server que pode servir até 3.000 programadores a executar até 25 tarefas por minuto no GitHub Actions. Inclui (à data da escrita) a configuração de funcionalidades de pré-visualização, como as GitHub Actions. Para personalizar a configuração às suas necessidades específicas, consulte os requisitos listados em Instalação do GitHub Enterprise Server no VMware.

Antes de começar

O GitHub Enterprise Server requer uma chave de licença válida. Podes inscrever-te numa licença de teste. Se pretende expandir as capacidades do GitHub Enterprise Server através de uma integração, verifique se se qualifica para uma licença gratuita de programador de cinco utilizadores. Candidate-se a esta licença através do Programa de Parceiros do GitHub.

Instalar o GitHub Enterprise Server no VMware

  1. Descarregue a versão atual do GitHub Enterprise Server para VMware ESXi/vSphere (OVA) e implemente o modelo OVA que descarregou.

    Captura de ecrã que mostra o GitHub Enterprise Server nas opções de instalação do VMware.

    Captura de ecrã que mostra a opção de menu Implementar o Modelo OVA.

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

  3. Seleciona todos os valores predefinidos por agora (detalhes a serem editados mais tarde) e espera que o OVA seja importado.

  4. Depois de importado, ajusta a configuração do hardware de acordo com as tuas necessidades. No nosso cenário de exemplo, precisamos da seguinte configuração.

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

    As suas necessidades podem variar. Consulte as orientações sobre considerações de hardware na Instalação do GitHub Enterprise Server no VMware. Veja também Adicionar recursos de CPU ou de memória para VMware para ajustar a configuração de hardware de acordo com a sua situação.

Configurar a instância do GitHub Enterprise Server

Captura de ecrã da janela Instalar o GitHub Enterprise.

Depois de a máquina virtual (VM) recém-provisionada ser ligada, configure-a através do seu navegador. Tens de carregar o ficheiro da tua licença e definir uma palavra-passe da consola de gestão. Certifique-se de escrever esta palavra-passe num local seguro.

Captura de ecrã do ecrã de acesso ao SSH do GitHub Enterprise para adicionar uma nova chave SSH.

Recomendamos que pelo menos tomes os seguintes passos:

  1. Carregue uma chave SSH pública para a consola de gestão para que possa aceder ao shell administrativo via SSH.

  2. Configure o TLS na sua instância para que possa usar um certificado assinado por uma autoridade certificadora de confiança. Aplica as tuas definições.

    Captura de ecrã a mostrar as definições que estão a ser aplicadas à sua instância.

  3. Enquanto a instância reinicia, configure o armazenamento de blob para as ações do GitHub.

    É necessário armazenamento externo em blob para ativar as Ações do GitHub no GitHub Enterprise Server (atualmente disponível como funcionalidade "beta"). As ações utilizam este armazenamento externo de blob para armazenar artefactos e registos. As ações no GitHub Enterprise Server suportam o Azure Blob Storage como fornecedor de armazenamento (e alguns outros). Precisas de criar uma nova conta de armazenamento Azure com um tipo de conta de armazenamento chamado BlobStorage.

    Captura de ecrã que mostra os detalhes da instância a introduzir para provisionar uma conta Azure Blob Storage.

  4. Quando a nova implementação de recursos do BlobStorage estiver concluída, guarde a string de ligação (disponível em chaves de acesso) para usar mais tarde.

  5. Depois de a instância reiniciar, crie uma nova conta de administrador na instância. Certifique-se de anotar também a palavra-passe deste utilizador.

    Captura de ecrã que mostra a conta Create admin para o GitHub Enterprise.

Outros passos de configuração

Para reforçar a sua instância para uso em produção, recomendam-se os seguintes passos opcionais de configuração:

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

    • Falhas de software (ao nível do sistema operativo ou aplicação)
    • Falhas de hardware (armazenamento, CPU, RAM, etc.)
    • Falhas no sistema anfitrião de virtualização
    • Rede lógica ou fisicamente cortada
  2. Configureutilidades de backup, fornecendo snapshots versionados para recuperação de desastres, alojados em disponibilidade separada da instância principal.

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

Configurar o corredor GitHub Actions

Neste ponto, deves ter uma instância do GitHub Enterprise Server a correr, com uma conta de administrador criada. Também deves ter armazenamento externo em blob que o GitHub Actions usa para persistência.

Cria um local para que as Ações do GitHub sejam executadas usando o Azure VMware Solution.

  1. Configura uma nova VM no cluster e baseia-a numa versão recente do Ubuntu Server.

    Captura de ecrã que mostra o nome da máquina virtual e a localização para configurar uma nova VM.

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

  3. Seleciona o sistema operativo convidado que queres instalar na VM.

    Captura de ecrã a mostrar a Família de Sistemas Operacionais Convidados e a versão do Sistema Operativo Convidado para instalar na VM.

  4. Depois de criada a VM, inicie-a e estabeleça ligação a ela via SSH.

  5. Instale a aplicação Actions runner, que executa um trabalho a partir de um fluxo de trabalho Actions no GitHub. Identifique e descarregue a versão Linux x64 mais recente do corredor Actions, seja a partir da página de lançamentos ou executando o seguinte script rápido. Este script exige que tanto o curl como 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 deves ter um ficheiro localmente na tua VM, action-runner-linux-arm64-.tar.gz. Extraia esta bola de alcatrão localmente:

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

    Esta extração desempacota alguns ficheiros localmente, incluindo um config.sh e um script run.sh.

Ativar Ações no GitHub

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

  1. Acede ao shell administrativo da instância do GitHub Enterprise Server via SSH e depois executa os seguintes comandos:

  2. Define uma variável de ambiente que contenha a tua string de ligação de armazenamento Blob.

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

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

    ghe-config-apply
    
  5. Execute uma verificação preliminar para instalar o software adicional necessário para as Ações no GitHub Enterprise Server.

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

    ghe-config app.actions.enabled true
    
    ghe-config-apply      
    
  7. Verifique o estado do armazenamento Blob.

    ghe-actions-check -s blob
    

    Deves ver a saída: Blob Storage está saudável.

  8. Agora que o GitHub Actions está configurado, ative-o para os seus utilizadores. Inicie sessão na sua instância do GitHub Enterprise Server como administrador e selecione o ícone no canto superior direito de qualquer página.

  9. Na barra lateral esquerda, selecione Visão Geral Empresarial, depois Políticas, Ações e selecione a opção para ativar Ações para todas as organizações.

  10. Configura o teu runner a partir do separador Runners auto-hospedados. Seleciona Adicionar novo e Novo runner no menu suspenso. É-te apresentado um conjunto de comandos para executar.

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

    ./config.sh --url https://10.1.1.26/enterprises/octo-org --token AAAAAA5RHF34QLYBDCHWLJC7L73MA
    
  12. Copia o config.sh comando e cola-o numa sessão no teu executor de Ações (criado anteriormente).

    Captura de ecrã a mostrar o registo e as definições do corredor de Ações do GitHub.

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

    Tip

    Para tornar este corredor disponível para as organizações da sua empresa, edite o seu acesso à organização. Pode limitar o acesso a um subconjunto de organizações, e até a repositórios específicos.

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

(Opcional) Configurar o GitHub Connect

Embora este passo seja opcional, recomendamos se planeia consumir ações open-source disponíveis no GitHub.com. Permite-lhe construir sobre o trabalho dos outros, referenciando estas ações reutilizáveis nos seus fluxos de trabalho.

Para ativar o GitHub Connect, siga os passos em Ativar o acesso automático a ações GitHub.com usando o GitHub Connect.

Assim que o GitHub Connect estiver ativado, selecione o Servidor para usar ações do GitHub.com nas execuções de fluxo de trabalho.

Captura de ecrã do servidor pode usar ações de GitHub.com em execuções de workflows ativadas.

Configure e execute o seu primeiro fluxo de trabalho

Agora que o Actions e o GitHub Connect estão configurados, vamos pôr todo este trabalho em prática. Aqui está um fluxo de trabalho de exemplo que faz referência ao excelente octokit/request-action, permitindo-nos "scriptar" 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 corre no GitHub Enterprise Server, utiliza automaticamente a API do GitHub Enterprise Server.

Se optar por não ativar o GitHub Connect, pode usar o seguinte fluxo de trabalho alternativo.

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

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

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

  2. No separador Ações do teu repositório, espera que o fluxo de trabalho seja executado.

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

    Pode vê-lo enquanto é processado.

    Captura de ecrã do fluxo de trabalho processado pelo runner.

Se tudo correu bem, deverá ver uma nova edição no seu repositório, intitulada "Hello world."

Captura de ecrã da edição Hello World no GitHub criada pelo github-actions.

Parabéns, completou o seu primeiro fluxo de trabalho de Ações no GitHub Enterprise Server, a correr na sua cloud privada Azure VMware Solution.

Este artigo configurou uma nova instância do GitHub Enterprise Server, o equivalente auto-hospedado do GitHub.com, sobre a sua nuvem privada Azure VMware Solution. A instância inclui suporte para GitHub Actions e utiliza Azure Blob Storage para persistência de logs e artefactos. Mas estamos apenas a arranhar a superfície do que pode fazer com o GitHub Actions. Consulta a lista de Ações no Marketplace do GitHub, ou cria a tua própria.

Próximos passos

Agora que já abordou a configuração do GitHub Enterprise Server na sua cloud privada Azure VMware Solution, saiba mais sobre: