Note
Atualmente, o suporte do GitHub Actions para o Google Cloud Storage está em beta e sujeito a alterações.
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 compilação 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 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 no GitHub:
-
Você deve adicionar
.localhost
,127.0.0.1
e::1
à lista de Exclusão de Proxy HTTP (nessa ordem). -
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
-
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
-
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
-
No console do Google Cloud, acesse a página Novo pool e provedor de carga de trabalho.
-
Em "Criar um pool de identidade", insira um nome para o pool de identidade e clique em Continuar.
-
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.
-
-
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"
Note
O nome do host do sua instância do GitHub Enterprise Server usado aqui não deve incluir o protocolo.
-
Clique em Save (Salvar).
-
-
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
-
Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .
-
Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.
-
Na barra lateral " Administrador do site", clique em Console de Gerenciamento .
-
Na barra lateral "Configurações", clique em Ações.
-
Em "GitHub Actions", selecione Habilitar GitHub Actions.
-
Em "Armazenamento de Artefatos e Logs", ao lado de "Google Cloud Storage", clique em Configurar.
-
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 prefixohttps://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
.
-
-
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.
-
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.
-
Aguarde a conclusão da execução de suas configurações.
Habilitar GitHub Actions com o Google Cloud Storage usando uma chave HMAC
-
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 .
-
Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.
-
Na barra lateral " Administrador do site", clique em Console de Gerenciamento .
-
Na barra lateral "Configurações", clique em Ações.
-
Em "GitHub Actions", selecione Habilitar GitHub Actions.
-
Em "Armazenamento de Artefatos e Logs", ao lado de "Google Cloud Storage", clique em Configurar.
-
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.
- URL de Serviço: a URL de serviço do bucket. Geralmente, é
-
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.
-
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.
-
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 GitHub. 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".