Skip to main content

Como habilitar o GitHub Actions com o Google Cloud Storage

Você pode habilitar o GitHub Actions em GitHub Enterprise Server e usar o Google Cloud Storage para armazenar dados gerados por execuções de fluxo de trabalho.

Quem pode usar esse recurso?

Site administrators can enable GitHub Actions and configure enterprise settings.

Observação: o suporte do GitHub Actions para o Google Cloud Storage está em versão beta e sujeito a alterações no momento.

Sobre o armazenamento externo para GitHub Actions

GitHub Actions usa o armazenamento de blobs externo para armazenar dados gerados por execuções de fluxo de trabalho. Os dados armazenados incluem logs de fluxo de trabalho, caches e artefatos de build carregados pelo usuário. Para saber mais, confira "Primeiros passos com o GitHub Actions para o GitHub Enterprise Server".

Há duas opções para configurar o GitHub Enterprise Server para se conectar ao provedor de armazenamento externo:

  • OIDC (OpenID Connect)
  • Autenticação tradicional baseada em credenciais usando segredos

É recomendável usar o OIDC sempre que possível, pois você não precisará criar ou gerenciar segredos de credenciais confidenciais e de longa duração para seu provedor de armazenamento e arriscar que eles sejam expostos. Depois de definir uma relação de confiança com o OIDC, seu provedor de armazenamento em nuvem emite automaticamente tokens de acesso de curta duração para sua instância do GitHub Enterprise Server, que expiram automaticamente.

Pré-requisitos

Antes de habilitar GitHub Actions, certifique-se de que você realizou os seguintes passos:

  • Crie um bucket do Google Cloud Storage para armazenar dados gerados pelas execuções de fluxo de trabalho.

  • Revisar os requisitos de hardware para GitHub Actions. Para obter mais informações, confira "Primeiros passos com o GitHub Actions para o GitHub Enterprise Server".

  • O TLS deve ser configurado para o domínio do sua instância do GitHub Enterprise Server. Para obter mais informações, confira "Configurar o TLS".

    Observação: É altamente recomendável que você configure a TLS em GitHub Enterprise Server com um certificado assinado por uma autoridade confiável. Embora um certificado autoassinado possa funcionar, é necessária uma configuração extra para os seus executores auto-hospedados, e não é recomendado para ambientes de produção.

  • Se você tiver um Servidor Proxy HTTP configurado em sua instância do GitHub Enterprise Server:

  • Você deve adicionar .localhost e 127.0.0.1 à lista de Exclusão de Proxy HTTP.

  • Se o local de armazenamento externo não for encaminhável, você também precisará adicionar a URL de armazenamento externo à lista de exclusões.

Para obter mais informações sobre como alterar as configurações de proxy, confira "Configurando um servidor proxy Web de saída".

  • Se você estiver usando o OIDC para a conexão com seu provedor de armazenamento, precisará expor as seguintes URLs de serviço de token OIDC em sua instância do GitHub Enterprise Server à Internet pública:

    https://HOSTNAME/_services/token/.well-known/openid-configuration
    https://HOSTNAME/_services/token/.well-known/jwks
    

    Isso garante que o provedor de armazenamento possa entrar em contato com sua instância do GitHub Enterprise Server para autenticação.

Habilitar GitHub Actions com o Google Cloud Storage usando OIDC (recomendado)

Para configurar o GitHub Enterprise Server para usar o OIDC com o Google Cloud Storage, primeiro você precisa criar uma conta de serviço do Google Cloud, depois criar um pool de identidade e um provedor de identidade do Google Cloud e, por fim, configurar GitHub Enterprise Server para usar o provedor e a conta de serviço para acessar o bucket do Google Cloud Storage.

1. Criar uma conta de serviço

  1. Crie uma conta de serviço que possa acessar o bucket usando OIDC. Para obter mais informações, confira Como criar e gerenciar contas de serviço na documentação do Google Cloud.

    Ao criar a conta de serviço, certifique-se de fazer o seguinte:

    • Habilite a API do IAM conforme descrito no início de Criar e gerenciar contas de serviço.
    • Adicione as seguintes funções à conta de serviço:
      • Criador do token da conta de serviço
      • Administrador de objeto de armazenamento
  2. Depois de criar a conta de serviço, anote o endereço de email dela, pois ele será necessário mais tarde. O endereço de email da conta de serviço está no formato SERVICE-ACCOUNT-NAME@PROJECT-NAME.iam.gserviceaccount.com.

2. Criar um pool de identidade e um provedor de identidade

  1. No console do Google Cloud, acesse a página Novo pool e provedor de carga de trabalho.

  2. Em "Criar um pool de identidade", insira um nome para o pool de identidade e clique em Continuar.

  3. Em "Adicionar um provedor ao pool":

    • Para "Selecionar um provedor", selecione OIDC (OpenID Connect) .

    • Em "Nome do provedor", insira um nome para o provedor.

    • Para "Emissor (URL)", insira a seguinte URL, substituindo HOSTNAME pelo nome do host público para sua instância do GitHub Enterprise Server:

      https://HOSTNAME/_services/token
      

      Por exemplo:

      https://my-ghes-host.example.com/_services/token
      
    • Em "Públicos-alvo", deixe a opção Público-alvo padrão selecionada, mas anote a URL do provedor de identidade, pois ela será necessária posteriormente. A URL do provedor de identidade está no formato https://iam.googleapis.com/projects/PROJECT-NUMBER/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAME.

    • Clique em Continuar.

  4. Em "Configurar atributos de provedor":

    • Para o mapeamento "OIDC 1", insira assertion.sub.

    • Em "Condições de Atributo", clique em Adicionar condição.

    • Para "CEL de condição", insira a seguinte condição, substituindo HOSTNAME pelo nome do host público para sua instância do GitHub Enterprise Server:

      google.subject == "HOSTNAME"
      

      Por exemplo:

      google.subject == "my-ghes-host.example.com"
      

      Nota: O nome do host de sua instância do GitHub Enterprise Server usado aqui não pode incluir o protocolo.

    • Clique em Salvar.

  5. Depois de criar o pool de identidade, na parte superior da página do pool de identidades, clique em Permitir acesso.

    • Em "Selecionar conta de serviço", selecione a conta de serviço que você criou no procedimento anterior.
    • Em "Selecionar entidades de segurança (identidades que podem acessar a conta de serviço)", selecione Somente identidades correspondentes ao filtro.
    • Para "Nome do atributo", selecione assunto.
    • Para "Valor do atributo", insira seu nome de host do GitHub Enterprise Server, sem o protocolo. Por exemplo, my-ghes-host.example.com.
    • Clique em Salvar.
    • Você pode ignorar a caixa de diálogo "Configurar seu aplicativo", pois o arquivo de configuração não é necessário.

3. Configurar GitHub Enterprise Server para se conectar ao Google Cloud Storage usando OIDC

  1. Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .

  2. Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.

  3. Na barra lateral " Administrador do site", clique em Console de Gerenciamento .

  4. Na barra lateral "Configurações", clique em Ações.

  5. Em "GitHub Actions", selecione Habilitar GitHub Actions.

  6. Em "Armazenamento de Artefatos e Logs", ao lado de "Google Cloud Storage", clique em Configurar.

  7. Em "Autenticação", selecione OIDC (OpenID Connect) e insira os valores para o armazenamento:

    • URL de Serviço: a URL de serviço do bucket. Geralmente, é https://storage.googleapis.com.

    • Nome do bucket: o nome do bucket.

    • ID do Provedor de Identidade de Carga de Trabalho: a ID do provedor de identidade do pool de identidade.

      Isso está no formato projects/PROJECT-NUMBER/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAME. Observe que você precisa remover o prefixo https://iam.googleapis.com/ do valor anotado no procedimento anterior.

      Por exemplo, projects/1234567890/locations/global/workloadIdentityPools/my-pool/providers/my-provider.

    • Conta de serviço: o endereço de email da conta de serviço que você anotou no procedimento anterior. Por exemplo, ghes-oidc-service-account@my-project.iam.gserviceaccount.com.

  8. Clique no botão Testar configurações de armazenamento para validar as configurações de armazenamento.

    Se houver erros ao validar as configurações de armazenamento, verifique as configurações no provedor de armazenamento e tente novamente.

  9. Na barra lateral "Configurações", clique em Salvar configurações.

    Observação: se você salvar as configurações no Console de Gerenciamento, isso reiniciará os serviços do sistema, o que poderá resultar em tempo de inatividade visível pelo usuário.

  10. Aguarde a conclusão da execução de suas configurações.

Habilitar GitHub Actions com o Google Cloud Storage usando uma chave HMAC

  1. Crie uma conta de serviço do Google Cloud que possa acessar o bucket e crie uma chave HMAC (Hash-based Message Authentication Code) para a conta de serviço. Para obter mais informações, confira "Como criar e gerenciar chaves HMAC para contas de serviço" na documentação do Google Cloud.

    A conta de serviço precisa ter as seguintes permissões de IAM (Gerenciamento de Identidades e Acesso) para o bucket:

    • storage.objects.create
    • storage.objects.get
    • storage.objects.list
    • storage.objects.update
    • storage.objects.delete
    • storage.multipartUploads.create
    • storage.multipartUploads.abort
    • storage.multipartUploads.listParts
    • storage.multipartUploads.list 1. Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .
  2. Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.

  3. Na barra lateral " Administrador do site", clique em Console de Gerenciamento .

  4. Na barra lateral "Configurações", clique em Ações.

  5. Em "GitHub Actions", selecione Habilitar GitHub Actions.

  6. Em "Armazenamento de Artefatos e Logs", ao lado de "Google Cloud Storage", clique em Configurar.

  7. Em "Autenticação", selecione Baseado em credenciais e insira os detalhes do bucket de armazenamento:

    • URL de Serviço: a URL de serviço do bucket. Geralmente, é https://storage.googleapis.com.
    • Nome do bucket: o nome do bucket.
    • ID de acesso HMAC e Segredo HMAC: a ID de acesso do Google Cloud e o segredo da conta de armazenamento. Para obter mais informações, confira "Como criar e gerenciar chaves HMAC para contas de serviço" na documentação do Google Cloud.
  8. Clique no botão Testar configurações de armazenamento para validar as configurações de armazenamento.

    Se houver erros ao validar as configurações de armazenamento, verifique as configurações no provedor de armazenamento e tente novamente.

  9. Na barra lateral "Configurações", clique em Salvar configurações.

    Observação: se você salvar as configurações no Console de Gerenciamento, isso reiniciará os serviços do sistema, o que poderá resultar em tempo de inatividade visível pelo usuário.

  10. Aguarde a conclusão da execução de suas configurações.

Próximas etapas

Depois que a execução da configuração tiver sido concluída com sucesso, GitHub Actions será habilitado em sua instância do GitHub Enterprise Server. Para suas próximas etapas, como gerenciar as permissões de acesso do GitHub Actions e adicionar executores auto-hospedados, retorne para "Primeiros passos com o GitHub Actions para o GitHub Enterprise Server".