Esta página explica como conectar um GitLab host ao Cloud Build.
Antes de começar
Ative as APIs Cloud Build e Secret Manager.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.
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 seu avatar no canto superior direito.
Clique em Editar perfil.
Na barra lateral à esquerda, selecione Tokens de acesso.
A página "Tokens de acesso pessoal" será exibida.
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 Google Cloud console.
A página Repositórios será exibida.
Na parte de cima da página, selecione a guia 2ª geração.
No seletor de projetos, na barra superior, selecione seu Google Cloud projeto.
Clique em Criar conexão de host para conectar um novo host ao Cloud Build.
No painel à esquerda, selecione GitLab como 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 sua conexão.
Na seção Detalhes do host, acesse Host do GitLab e selecione GitLab.com.
Opcional: se você quiser gerenciar as chaves de criptografia usadas para criptografar os tokens de acesso dos repositórios do GitLab, acesse a seção Criptografia e escolha uma chave do Cloud Key Management Service. Para mais informações, consulte Ativar chaves de criptografia gerenciadas pelo cliente para o Secret Manager.
Na seção Tokens de acesso pessoal, insira as seguintes informações:
Token de acesso de API: insira o token com acesso ao escopo
api. Esse token é usado para conectar e desconectar repositórios.Ler token de acesso à API: insira o token com acesso ao escopo
read_api. Os acionadores 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. Após a conexão do host, o Cloud Build também cria um secret de webhook em seu nome. É possível 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, siga estas etapas 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 secrets em um Google Cloud projeto diferente daquele que pretende usar para criar uma conexão de host, insira o seguinte comando para conceder acesso ao seu projeto 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 seu Google Cloud projeto.
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 seguinte comando 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 é um nome para sua 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 seu Google Cloud projeto.
- REGION é a região da sua conexão.
- API_TOKEN é o nome do seu token com o escopo
api. - READ_TOKEN é o nome do seu token com o escopo
read_api. - 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 de host do Cloud Build será desconectada do repositório do GitLab. Como resultado, você verá erros nas seguintes circunstâncias:
Ao tentar vincular uma conexão do Cloud Build do repositório do GitLab, 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
Failed to list branches. You can still enter one manuallymensagem.
Para girar um token antigo ou expirado da sua conexão, faça o seguinte:
Encontre os secrets associados à conexão de host:
Execute este comando:
gcloud builds connections describe CONNECTION_PATH --region=REGIONEm que:
- CONNECTION_PATH é o caminho da conexão de 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 de host do GitLab no Cloud Build, no formato
Na saída do comando, procure os valores dos campos de token do 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 girar um token de acesso. Quando você gira um token, o GitLab cria um novo token com novas credenciais e invalida a versão anterior desse token. O token girado tem as mesmas permissões e escopo do token original.
Copie o ID do token girado.
Crie uma nova versão do secret para cada token:
Abra a página do Secret Manager no Google Cloud console:
Para cada token girado, 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 girado 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 usando componentes de CI/CD gerenciados pelo Google no pipeline do GitLab. Google Cloud Consulte o GitLab no Google Cloud.