Esta página explica como associar um anfitrião do GitLab ao Cloud Build.
Antes de começar
-
Enable the Cloud Build and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Crie uma associação a um anfitrião do GitLab
Antes de criar uma associação de anfitrião para a sua instância do GitLab, tem de criar tokens de acesso pessoal no GitLab seguindo estes passos:
Inicie sessão na sua instância do GitLab.
Na página do GitLab da sua instância, clique no seu avatar no canto superior direito.
Clique em Editar perfil.
Na barra lateral esquerda, selecione Tokens de acesso.
É apresentada a página Tokens de acesso pessoal.
Crie um token de acesso com o âmbito
apipara usar na associação e desassociação de repositórios.Crie um token de acesso com o âmbito
read_apipara garantir que os repositórios do Cloud Build podem aceder ao código-fonte nos repositórios.
Consola
Para associar o seu anfitrião do GitLab ao Cloud Build:
Abra a página Repositórios na Google Cloud consola.
É apresentada a página Repositórios.
Na parte superior da página, selecione o separador 2.ª geração.
No seletor de projetos na barra superior, selecione o seu Google Cloud projeto.
Clique em Criar associação de anfitrião para associar um novo anfitrião ao Cloud Build.
No painel do lado esquerdo, selecione GitLab como fornecedor de origem.
Na secção Configurar associação, introduza as seguintes informações:
Região: selecione uma região para a sua associação.
Nome: introduza um nome para a associação.
Na secção Detalhes do anfitrião, selecione ou introduza as seguintes informações:
- Fornecedor do GitLab: selecione GitLab.com como fornecedor.
Na secção Tokens de acesso pessoal, introduza as seguintes informações:
Token de acesso à API: introduza o token com o acesso ao âmbito
api. Este token é usado para associar e desassociar repositórios.Ler chave de acesso à API: introduza a chave com o âmbito
read_apiacesso. Os acionadores do Cloud Build usam este token para aceder ao código-fonte nos repositórios.
Clique em Ligar.
Depois de clicar no botão Associar, os seus tokens de acesso pessoal são armazenados em segurança no Secret Manager. Após a associação do anfitrião, o Cloud Build também cria um segredo de webhook em seu nome. Pode ver e gerir os seus segredos na página Secret Manager.
Agora, criou com êxito uma associação do GitLab.
gcloud
Antes de associar o seu anfitrião do GitLab ao Cloud Build, conclua os seguintes passos para armazenar as suas credenciais:
Crie um segredo de webhook no Secret Manager executando o seguinte comando:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create my-gle-webhook-secret --data-file=-Se armazenar os seus segredos num Google Cloud projeto diferente do que planeia usar para criar uma ligação de anfitrião, introduza o seguinte comando para conceder ao seu projeto acesso ao agente do serviço Cloud Build:
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.admin"Onde:
- PROJECT_ID é o ID do seu Google Cloud projeto.
Já pode continuar a associar o seu anfitrião do GitLab ao Cloud Build.
Conclua os seguintes passos:
Para associar o seu anfitrião do GitLab ao Cloud Build:
Introduza o seguinte comando para criar uma associação do GitLab:
gcloud builds connections create gitlab CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/API_TOKEN/versions/SECRET_VERSION \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSIONOnde:
- CONNECTION_NAME é um nome para a ligação do anfitrião do GitLab no Cloud Build.
- HOST_URI é o URI da sua instância do GitLab. Por exemplo,
https://my-gle-server.net. - PROJECT_ID é o ID do seu Google Cloud projeto.
- REGION é a região da sua ligação.
- API_TOKEN é o nome do seu token com o âmbito
api. - READ_TOKEN é o nome do seu token com o âmbito
read_api. - SECRET_VERSION é a versão do seu segredo.
- WEBHOOK_SECRET é o seu código secreto do webhook.
Agora, criou com êxito uma associação do GitLab.
Rode tokens de acesso do GitLab antigos ou expirados
Se o seu token de acesso do GitLab expirar, a ligação do host do Cloud Build é desassociada do respetivo repositório do GitLab. Como resultado, vai ver erros nas seguintes circunstâncias:
Quando tenta associar um repositório do GitLab a uma ligação do Cloud Build, é apresentada uma mensagem
Failed to fetch repositories to link. Check that Cloud Build is still authorized to access data from the selected connection.Na página Acionadores, quando clica em Executar, a página Executar acionador é aberta e mostra uma mensagem
Failed to list branches. You can still enter one manually.
Para rodar um token antigo ou expirado para a sua ligação, faça o seguinte:
Encontre os segredos associados à ligação do anfitrião:
Execute o seguinte comando:
gcloud builds connections describe CONNECTION_PATH --region=REGIONOnde:
- CONNECTION_PATH é o caminho da sua ligação de anfitrião do GitLab no Cloud Build, no formato
projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME. - REGION é a região da sua ligação.
- CONNECTION_PATH é o caminho da sua ligação de anfitrião do GitLab no Cloud Build, no formato
No resultado do comando, procure os valores dos campos do token de utilizador.
readAuthorizerCredential.userTokenSecretVersionmostra o nome do Secret Manager doread_apitoken eauthorizerCredential.userTokenSecretVersionmostra o nome do Secret Manager doapitoken. Estes nomes são armazenados como segredos no Secret Manager.
Rode cada token de acesso no GitLab:
Aceda ao repositório do GitLab associado à ligação do host do Cloud Build.
Siga as instruções na documentação do GitLab para rodar um token de acesso. Quando roda um token, o GitLab cria um novo token com novas credenciais e invalida a versão anterior desse token. O token com rotação tem as mesmas autorizações e âmbito que o token original.
Copie o ID do token rodado.
Crie uma nova versão do segredo para cada token:
Abra a página Secret Manager na Google Cloud consola:
Para cada token que rodou, encontre o nome secreto que identificou no passo 1 e clique em Ações e, de seguida, clique em Adicionar nova versão.
Na janela Adicionar nova versão, introduza o ID do token rodado e, de seguida, clique em Adicionar nova versão.
O que se segue?
- Saiba como associar um repositório do GitLab.
- Saiba como criar e implementar as suas cargas de trabalho Google Cloud usando componentes de CI/CD geridos pela Google no seu pipeline do GitLab. Consulte GitLab no Google Cloud.