Conectar-se ao host do GitLab Enterprise Edition

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, explicamos como se conectar a um host do GitLab Enterprise Edition ao Cloud Build.

Antes de começar

  • Ative as APIs Cloud Build and Secret Manager.

    Ative as APIs

Configuração

Antes de criar uma conexão de host do GitLab Enterprise Edition, você precisa ter uma chave de API para autenticar e aceitar eventos recebidos do GitLab Enterprise Edition. Além disso, é necessário criar tokens de acesso pessoal no GitLab Enterprise Edition para criar webhooks e recuperar dados de repositório.

Nesta seção, descrevemos as etapas que você precisa concluir antes de criar um gatilho do GitLab Enterprise Edition.

Como conseguir uma chave de API

Para conectar seus repositórios de host e autenticar os eventos de webhook de entrada, você precisa de uma chave de API.

Para gerar uma chave de API:

  1. Abra a página Credenciais no Console do Google Cloud:

    Abra a página Credenciais

  2. Clique em Criar credenciais.

  3. Clique em Chave de API.

    Você vai ver uma caixa de diálogo com a chave de API criada. Anote a sua chave de API.

  4. Se quiser restringir a chave para aplicativos de produto, clique em Restringir chave para concluir as etapas adicionais para protegê-la. Caso contrário, clique em Fechar.

    Para saber como restringir sua chave, consulte Como aplicar restrições de chave de API.

Como criar tokens de acesso pessoal

É necessário criar dois tokens de acesso pessoais no GitLab Enterprise Edit para realizar as seguintes tarefas:

Depois de criar os tokens de acesso pessoal, salve temporariamente os valores do token, por exemplo, em um arquivo de texto simples. Em seguida, você vai adicionar os tokens ao Secret Manager, um armazenamento de credenciais que será usado com o Cloud Build, em etapas posteriores. Os tokens serão usados para conectar o repositório do GitLab Enterprise Edition ao Cloud Build.

Como se conectar a um host do GitLab Enterprise Edition

Console

Para conectar o host do GitLab Enterprise Edition ao Cloud Build usando o console do Google Cloud:

  1. Abra a página Gerenciar repositórios no console do Google Cloud:

    Abrir a página "Gerenciar repositórios"

  2. Selecione uma Região no menu suspenso.

  3. Clique em Conectar host.

  4. Selecione GitLab Enterprise Edition.

    O painel Conectar host é exibido.

    Digite as seguintes informações para conectar a instância do GitLab Enterprise Edition ao Cloud Build:

    • Name: o nome da conexão do host.

    • URL do host: o URL do host da sua instância do GitLab Enterprise Edition. Por exemplo, https://gitlab.example.com.

    • Chave de API do Google Cloud: chave de API usada para autenticar suas credenciais.

    • [OPCIONAL] Certificado de CA: certificado particular ou autoassinado. O certificado não pode exceder 10 KB e precisa estar no formato PEM (.pem, .cer ou .crt). Se esta seção for deixada em branco, um conjunto padrão de certificados será usado.

    • Nome de usuário: o nome de usuário da sua conta do GitLab Enterprise Edition. Essa conta precisa ter acesso de mantenedor aos repositórios que você quer conectar ao Cloud Build.

    • Token de acesso da API Read: é o token de acesso pessoal da sua conta do GitLab Enterprise Edition com permissões de leitura.

    • Token de acesso à API: o token de acesso pessoal da conta do GitLab Enterprise Edition com permissões de API em projetos e repositórios.

    • Tipo de conexão: selecione Internet pública se o Cloud Build se conectar à instância por meio de Internet pública. Selecione Acesso à rede privada se o Cloud Build conectar a instância por meio de uma rede VPC existente usando o diretório de serviços.

    • [OPCIONAL] Serviço do Diretório de serviços: se você selecionar Acesso à rede privada como seu Tipo de conexão, digite o nome do serviço do Diretório de serviços. Para saber mais, consulte Como usar o Diretório de serviços para acesso privado ou Criar repositórios do GitLab Enterprise Edition em uma rede particular.

  5. Clique em Conectar host.

    O painel Conectar repositório é exibido.

    Depois de criar uma conexão de host, os tokens de acesso pessoal e a chave de API são armazenados com segurança no Secret Manager. Após a conexão do host, o Cloud Build também cria uma chave secreta do webhook em seu nome. É possível ver e gerenciar seus secrets na página Secret Manager.

gcloud

Para conectar seu host do GitLab Enterprise Edition ao Cloud Build usando comandos gcloud, execute o comando gcloud alpha builds enterprise-config gitlab create no seu terminal. Ao contrário de conectar seu host usando o console do Google Cloud, você precisará armazenar manualmente seus tokens de acesso pessoal, chave de API e chave secreta do webhook no Secret Manager antes de executar o seguinte comando:

gcloud alpha builds enterprise-config gitlab create
    --name=GITLAB_ENTERPRISE_EDITION_CONFIG_NAME \
    --region=REGION \
    --user-name=USERNAME \
    --host-uri=HOST_URI \
    --api-access-token-secret-version=API_ACCESS_TOKEN_SECRET_VERSION \
    --read-access-token-secret-version=READ_ACCESS_TOKEN_SECRET_VERSION \
    --webhook-secret-secret-version=WEBHOOK_SECRET_SECRET_VERSION \
    --api-key-secret-version=API_KEY_SECRET_VERSION \
    --service-directory-service=SERVICE_DIRECTORY_SERVICE \
    --ssl-ca-file=SSL_CA_FILE

Substitua:

  • GITLAB_ENTERPRISE_EDITION_CONFIG_NAME é o nome da configuração do GitLab Enterprise Edition.
  • REGION é a região em que a configuração do GitLab Enterprise Edition está localizada.

  • USERNAME é seu nome de usuário do GitLab Enterprise Edition.

  • HOST_URI é o URI do host do GitLab Enterprise Edition.

  • API_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do token de acesso da API armazenado no Secret Manager. O formato esperado para secrets armazenados no Secret Manager é projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}. Especifique latest como a versão para usar a versão mais recente do secret. Isso se aplica a cada recurso armazenado no Secret Manager.

  • READ_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do token de acesso de leitura armazenado no Secret Manager.

  • WEBHOOK_SECRET_SECRET_VERSION é o nome do recurso da chave secreta do webhook armazenada no Secret Manager.

  • API_KEY_SECRET_VERSION é a chave de API do Google Cloud.

  • [Opcional] SERVICE_DIRECTORY_SERVICE é o nome do Diretório de serviços usado para se comunicar com a instância do GitLab Enterprise Edition.

  • [Opcional] SSL_CA_FILE é o certificado SSL que será usado para solicitações ao GitLab Enterprise Edition. O certificado precisa estar no formato PEM. Você pode usar o caminho do arquivo local para fazer upload do certificado.

API

Para conectar seu host do GitLab Enterprise Edition ao Cloud Build usando a API Cloud Build, use o seguinte modelo JSON. Ao contrário de conectar seu host usando o console do Google Cloud, você precisa armazenar manualmente seus tokens de acesso pessoais e a chave secreta do webhook no Secret Manager antes de chamar a API:

  {
      "username": "USERNAME",
      "secrets": {
        "apiAccessTokenVersion": "API_ACCESS_TOKEN_SECRET_VERSION",
        "readAccessTokenVersion": "READ_ACCESS_TOKEN_SECRET_VERSION",
        "webhookSecretVersion": "WEBHOOK_SECRET_SECRET_VERSION",
        "apiKeyVersion": "API_KEY_SECRET_VERSION"
      },
      "enterpriseConfig": {
        "hostUri": "HOST_URI",
        "sslCa": "SSL_CA",
        "serviceDirectoryConfig": {
          "service: "SERVICE_DIRECTORY_SERVICE"
        }
      }
  }

Substitua:

  • USERNAME é seu nome de usuário do GitLab Enterprise Edition.
  • API_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do token de acesso da API armazenado no Secret Manager. Talvez seja necessário conceder o papel Secret Manager à sua conta de serviço do Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Para saber mais, consulte Como conceder o papel Secret Manager à conta de serviço.

  • READ_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do token de acesso de leitura armazenado no Secret Manager.

  • WEBHOOK_SECRET_SECRET_VERSION é o nome do recurso da chave secreta do webhook armazenada no Secret Manager.

  • API_KEY_SECRET_VERSION é a chave de API do Google Cloud.

  • HOST_URI é o URI do host da sua instância do GitLab Enterprise Edition.

  • [Opcional] SSL_CA é o certificado SSL que será usado para solicitações ao GitLab Enterprise Edition. O certificado precisa estar no formato PEM e ser fornecido como uma string.

  • [Opcional] SERVICE_DIRECTORY_SERVICE é o nome do serviço do Diretório de serviços usado para se comunicar com sua instância do GitLab Enterprise Edition.

Digite o seguinte comando curl no seu terminal:

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/gitLabConfigs?gitlabConfigId=GITLAB_ENTERPRISE_EDITION_CONFIG_NAME -d @config.json

Substitua:

  • PROJECT_ID é o ID do projeto no Google Cloud.
  • REGION é a região em que a configuração do GitLab Enterprise Edition está localizada.

  • GITLAB_ENTERPRISE_EDITION_CONFIG_NAME é o nome da configuração do GitLab Enterprise Edition.

A seguir