Conectar-se a um host do GitLab

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ão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar as APIs

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:

  1. Faça login na sua instância do GitLab.

  2. Na página do GitLab da sua instância, clique no seu avatar no canto superior direito.

  3. Clique em Editar perfil.

  4. Na barra lateral à esquerda, selecione Tokens de acesso.

    A página "Tokens de acesso pessoal" será exibida.

  5. Crie um token de acesso com o escopo api para usar na conexão e desconexão de repositórios.

  6. Crie um token de acesso com o escopo read_api para 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:

  1. Abra a página Repositórios no Google Cloud console.

    Abrir a página Repositórios

    A página Repositórios será exibida.

  2. Na parte de cima da página, selecione a guia 2ª geração.

  3. No seletor de projetos, na barra superior, selecione seu Google Cloud projeto.

  4. Clique em Criar conexão de host para conectar um novo host ao Cloud Build.

  5. No painel à esquerda, selecione GitLab como provedor de origem.

  6. 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.

  7. Na seção Detalhes do host, acesse Host do GitLab e selecione GitLab.com.

  8. 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.

  9. 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.

  10. 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:

  1. Armazene seu token no Secret Manager.

  2. 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=-
    
  3. 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:

  1. 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_VERSION
    

    Em 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 connection aparece.

  • 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 manually mensagem.

Para girar um token antigo ou expirado da sua conexão, faça o seguinte:

  1. Encontre os secrets associados à conexão de host:

    1. Execute este comando:

      gcloud builds connections describe CONNECTION_PATH --region=REGION
      

      Em 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.
    2. Na saída do comando, procure os valores dos campos de token do usuário. readAuthorizerCredential.userTokenSecretVersion mostra o nome do Secret Manager do token read_api, e authorizerCredential.userTokenSecretVersion mostra o nome do Secret Manager do token api. Esses nomes são armazenados como secrets no Secret Manager.

  2. Gire cada token de acesso no GitLab:

    1. Acesse o repositório do GitLab conectado à conexão de host do Cloud Build.

    2. 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.

    3. Copie o ID do token girado.

  3. Crie uma nova versão do secret para cada token:

    1. Abra a página do Secret Manager no Google Cloud console:

      Abrir a página do Secret Manager

    2. Para cada token girado, encontre o nome do secret identificado na etapa 1, clique em Ações, e em Adicionar nova versão.

    3. Na janela Adicionar nova versão, insira o ID do token girado e clique em Adicionar nova versão.

Para mais informações, consulte Expiração do token de acesso na documentação do GitLab.

A seguir