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 APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com a função Proprietário (roles/owner). Caso contrário, você pode receber essa permissão com a função Administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder funções.

    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 seus 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. 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, 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 projetodiferente 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

Gire seus tokens de acesso para que a conexão do host do Cloud Build possa manter a conexão com o repositório do GitLab. Se o token de acesso do GitLab expirar, a conexão do host do Cloud Build será desconectada do repositório do GitLab. Quando isso acontece, não é possível desativar a conexão ou vincular um repositório até que você gire o token expirado. Além disso, você vai encontrar erros nas seguintes circunstâncias:

  • A página Detalhes da conexão mostra uma mensagem de erro informando que Connection is disconnected due to an invalid or expired access token.

  • Se você tentar vincular um repositório a uma conexão que tem um token expirado, uma mensagem de Token de acesso inválido será exibida. Ao clicar em Visualizar conexão , você será direcionado à página Detalhes da conexão para a conexão com o token expirado.

O Cloud Build permite girar tokens de acesso inserindo novos valores de token e salvando-os no Secret Manager na versão mais recente do secret para esses tokens. Para girar seus tokens de acesso, faça o seguinte:

  1. Gire cada token de acesso no GitLab:

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

    2. Siga as instruções na documentação do GitLab para girar um token de acesso. Ao girar 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 os IDs dos tokens girados.

  2. Atualize seu token de acesso no Cloud Build:

    1. Acesse a página Detalhes da conexão.

    2. Selecione Atualizar tokens de acesso.

    3. No menu Rotação de tokens, insira seus novos tokens nos campos Token de acesso de API e Ler token de acesso.

    4. Opcional: se você quiser que sua conexão sempre use a versão mais recente do secret para seus tokens, selecione Atualizar conexão para sempre usar a versão mais recente. Deixar essa opção desmarcada pode ser útil se a conexão usar um número de versão de secret específico.

    5. Selecione Atualizar para salvar as mudanças.

      O Cloud Build salva os novos tokens de acesso como a versão mais recente do seu secret no Secret Manager.

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

A seguir