Nesta página, explicamos como conectar um host do GitLab ao Cloud Build.
Antes de começar
Ative as APIs Cloud Build e Secret Manager, se alguma delas ainda não estiver ativada.
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 o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). 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 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 é exibida.
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, 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 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.
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 com o 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 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 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 com o GitLab.
Girar tokens de acesso do GitLab antigos ou expirados
Faça a rotação dos tokens de acesso para que a conexão do host do Cloud Build mantenha a conexão com seu 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 nem vincular um repositório até girar o token expirado. Além disso, você vai encontrar erros nas seguintes circunstâncias:
A página Detalhes da conexão da sua conexão mostra uma mensagem de erro indicando
Connection is disconnected due to an invalid or expired access token.Se você tentar vincular um repositório a uma conexão com um token expirado, a mensagem Token de acesso inválido vai aparecer. Ao clicar em Ver conexão, você acessa a página Detalhes da conexão da 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 fazer a rotação dos tokens de acesso, faça o seguinte:
Gire cada token de acesso no GitLab:
Acesse o repositório do GitLab conectado à sua 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. Seu token rotacionado tem as mesmas permissões e escopo do token original.
Copie os IDs dos tokens rotacionados.
Atualize seu token de acesso no Cloud Build:
Acesse a página Detalhes da conexão da sua conexão.
Selecione Atualizar tokens de acesso.
No menu Rotação de token, insira os novos tokens nos campos Token de acesso à API e Token de acesso de leitura.
(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 sua conexão usar um número de versão secreto específico.
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.
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.