Nesta página, explicamos como conectar um host 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.
Conectar-se a um host do GitLab
Antes de criar uma conexão de host para sua instância do GitLab, é necessário criar tokens de acesso pessoal no GitLab seguindo estas etapas:
Faça login na sua instância do GitLab.
Na página do GitLab da sua instância, clique no avatar no canto superior direito.
Clique em Editar perfil.
Na barra lateral à esquerda, selecione Tokens de acesso.
A página Tokens de acesso pessoal vai aparecer.
Crie um token de acesso com o escopo
apipara usar na conexão e desconexão de repositórios.Crie um token de acesso com o escopo
read_apipara garantir que os repositórios do Cloud Build possam acessar o código-fonte nos repositórios.
Console
Para conectar seu host do GitLab ao Cloud Build:
Abra a página Repositórios no console do Google Cloud .
A página Repositórios vai aparecer.
Na parte de cima da página, selecione a guia 2ª geração.
No seletor de projetos, na barra superior, selecione seu projeto Google Cloud .
Clique em Criar conexão de host para conectar um novo host ao Cloud Build.
No painel à esquerda, selecione GitLab como seu provedor de origem.
Na seção Configurar conexão, insira as seguintes informações:
Região: selecione uma região para sua conexão.
Nome: insira um nome para a conexão.
Na seção Detalhes do host, selecione ou insira as seguintes informações:
- Provedor do GitLab: selecione GitLab.com como seu provedor.
Na seção Tokens de acesso pessoal, insira as seguintes informações:
Token de acesso à API: insira o token com o acesso ao escopo
api. Esse token é usado para conectar e desconectar repositórios.Ler token de acesso à API: insira o token com o acesso ao escopo
read_api. Os gatilhos do Cloud Build usam esse token para acessar o código fonte nos repositórios.
Clique em Conectar.
Depois de clicar no botão Conectar, seus tokens de acesso pessoal serão armazenados com segurança no Secret Manager. Depois da conexão de host, o Cloud Build também cria um segredo de webhook em seu nome. Você pode acessar e gerenciar seus secrets na página do Secret Manager.
Você criou uma conexão do GitLab.
gcloud
Antes de conectar seu host do GitLab ao Cloud Build, conclua as etapas a seguir para armazenar suas credenciais:
Crie um secret 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 você armazenar seus segredos em um projeto Google Cloud diferente daquele que planeja usar para criar uma conexão de host, insira o comando a seguir para conceder ao seu projeto acesso ao agente de serviço do 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"Em que:
- PROJECT_ID é o ID do projeto Google Cloud .
Agora você pode conectar seu host do GitLab ao Cloud Build.
Siga estas etapas:
Para conectar seu host do GitLab ao Cloud Build:
Insira o comando a seguir para criar uma conexã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_VERSIONEm que:
- CONNECTION_NAME é o nome da conexão de host 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 projeto Google Cloud .
- REGION é a região da sua conexão.
- API_TOKEN é o nome do seu token com o
apiscope. - READ_TOKEN é o nome do seu token com o
read_apiscope. - SECRET_VERSION é a versão do seu secret.
- WEBHOOK_SECRET é o secret do webhook.
Você criou uma conexão do GitLab.
Girar tokens de acesso do GitLab antigos ou expirados
Se o token de acesso do GitLab expirar, a conexão do host do Cloud Build será desconectada do repositório do GitLab. Como resultado, você vai encontrar erros nas seguintes circunstâncias:
Quando você tenta vincular um repositório do GitLab a uma conexão do Cloud Build, uma mensagem
Failed to fetch repositories to link. Check that Cloud Build is still authorized to access data from the selected connectionaparece.Na página Acionadores, quando você clica em Executar, a página Executar acionador é aberta e mostra uma mensagem
Failed to list branches. You can still enter one manually.
Para fazer a rotação de um token antigo ou expirado da sua conexão, faça o seguinte:
Encontre os secrets associados à conexão do host:
Execute este comando:
gcloud builds connections describe CONNECTION_PATH --region=REGIONEm que:
- CONNECTION_PATH é o caminho da conexão do host do GitLab no Cloud Build, no formato
projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME. - REGION é a região da sua conexão.
- CONNECTION_PATH é o caminho da conexão do host do GitLab no Cloud Build, no formato
Na saída do comando, procure os valores dos campos do token de usuário.
readAuthorizerCredential.userTokenSecretVersionmostra o nome do Secret Manager do tokenread_api, eauthorizerCredential.userTokenSecretVersionmostra o nome do Secret Manager do tokenapi. Esses nomes são armazenados como secrets no Secret Manager.
Gire cada token de acesso no GitLab:
Acesse o repositório do GitLab conectado à conexão de host do Cloud Build.
Siga as instruções na documentação do GitLab para fazer a rotação de um token de acesso. Quando você faz a rotação de um token, o GitLab cria um novo token com novas credenciais e invalida a versão anterior dele. O token rotacionado tem as mesmas permissões e escopo do token original.
Copie o ID do token rotacionado.
Crie uma nova versão do secret para cada token:
Abra a página do Secret Manager no console Google Cloud :
Para cada token que você girou, encontre o nome do secret identificado na etapa 1, clique em Ações e em Adicionar nova versão.
Na janela Adicionar nova versão, insira o ID do token rotacionado e clique em Adicionar nova versão.
A seguir
- Saiba como conectar um repositório do GitLab.
- Saiba como criar e implantar suas cargas de trabalho no Google Cloud usando componentes de CI/CD gerenciados pelo Google no seu pipeline do GitLab. Consulte GitLab no Google Cloud.