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
Baixe a versão atual do GitHub Enterprise Server para VMware ESXi/VSPHERE (OVA), e implante o modelo OVA baixado.
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.
Por enquanto, selecione todos os padrões (editaremos os detalhes mais adiante) e aguarde até que o OVA seja importado.
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
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.
É recomendado executar, pelo menos, as seguintes etapas:
Carregue uma chave SSH pública no console de gerenciamento para poder acessar o shell administrativo por SSH.
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.
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.
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.
Quando a instância for reiniciada, crie uma conta de administrador nela. Anote a senha desse usuário também.
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:
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
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.
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.
Provisione uma nova VM no cluster e baseie-a em uma versão recente do Ubuntu Server.
Continue pela configuração selecionando o recurso de computação, armazenamento e compatibilidade.
Selecione o sistema operacional convidado que você deseja instalar na VM.
Depois que a VM for criada, ligue-a e conecte-se com ela por SSH.
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
erun.sh
.
Habilitar o GitHub Actions
Configure e habilite o GitHub Actions na instância do GitHub Enterprise Server.
Acessar o shell administrativo da instância do GitHub Enterprise Server por SSH e execute os seguintes comandos:
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>"
Configure o armazenamento de ações.
ghe-config secrets.actions.storage.blob-provider azure ghe-config secrets.actions.storage.azure.connection-string "$CONNECTION\_STRING`
Aplique as configurações.
ghe-config-apply
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"
Habilite as ações e reaplique a configuração.
ghe-config app.actions.enabled true ghe-config-apply
Verifique a integridade do armazenamento de blobs.
ghe-actions-check -s blob
A saída deve ser: O Armazenamento de Blobs está íntegro.
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.
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.
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.
Copie o comando para configurar o executor, por exemplo:
./config.sh --url https://10.1.1.26/enterprises/octo-org --token AAAAAA5RHF34QLYBDCHWLJC7L73MA
Copie o comando
config.sh
e cole-o em uma sessão no executor do Actions (já criado).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.
(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.
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.
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.
Navegue até um repositório na sua instância e adicione o fluxo de trabalho acima como:
.github/workflows/hello-world.yml
Na guia Ações do repositório, aguarde a execução do fluxo de trabalho.
Você pode vê-lo sendo processado.
Se tudo for executado com sucesso, você verá um novo problema no repositório, intitulado "Olá, Mundo".
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: