En esta página se explica cómo conectar un host de GitLab a Cloud Build.
Antes de empezar
-
Enable the Cloud Build and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Conectarse a un host de GitLab
Antes de crear una conexión de host para tu instancia de GitLab, debes crear tokens de acceso personal en GitLab siguiendo estos pasos:
Inicia sesión en tu instancia de GitLab.
En la página de GitLab de tu instancia, haz clic en tu avatar, situado en la esquina superior derecha.
Haz clic en Editar perfil.
En la barra lateral de la izquierda, selecciona Tokens de acceso.
Verás la página Tokens de acceso personales.
Crea un token de acceso con el permiso
apipara conectar y desconectar repositorios.Crea un token de acceso con el ámbito
read_apipara asegurarte de que los repositorios de Cloud Build puedan acceder al código fuente de los repositorios.
Consola
Para conectar tu host de GitLab a Cloud Build, sigue estos pasos:
Abre la página Repositorios en la consola de Google Cloud .
Verás la página Repositorios.
En la parte superior de la página, selecciona la pestaña 2.ª gen..
En el selector de proyectos de la barra superior, selecciona tu Google Cloud proyecto.
Haz clic en Crear conexión de host para conectar un host nuevo a Cloud Build.
En el panel de la izquierda, selecciona GitLab como proveedor de origen.
En la sección Configurar conexión, introduce la siguiente información:
Región: selecciona una región para tu conexión.
Nombre: introduce un nombre para la conexión.
En la sección Detalles del host, selecciona o introduce la siguiente información:
- Proveedor de GitLab: selecciona GitLab.com como proveedor.
En la sección Tokens de acceso personales, introduce la siguiente información:
Token de acceso a la API: introduce el token con acceso al ámbito
api. Este token se usa para conectar y desconectar repositorios.Leer token de acceso a la API: introduce el token con el ámbito
read_apiaccess. Los activadores de Cloud Build usan este token para acceder al código fuente de los repositorios.
Haz clic en Conectar.
Después de hacer clic en el botón Conectar, tus tokens de acceso personales se almacenarán de forma segura en Secret Manager. Después de la conexión de host, Cloud Build también crea un secreto de webhook por ti. Puedes ver y gestionar tus secretos en la página Secret Manager.
Ya has creado una conexión de GitLab.
gcloud
Antes de conectar tu host de GitLab a Cloud Build, sigue estos pasos para almacenar tus credenciales:
Crea un secreto de webhook en Secret Manager ejecutando el siguiente comando:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create my-gle-webhook-secret --data-file=-Si almacenas tus secretos en un proyecto de Google Cloud distinto del que vas a usar para crear una conexión de host, introduce el siguiente comando para conceder acceso a tu proyecto al agente de servicio de 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"Donde:
- PROJECT_ID es el ID de tu proyecto Google Cloud .
Ahora puedes conectar tu host de GitLab a Cloud Build.
Este agente debe seguir estos pasos:
Para conectar tu host de GitLab a Cloud Build, sigue estos pasos:
Introduce el siguiente comando para crear una conexión de 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_VERSIONDonde:
- CONNECTION_NAME es el nombre de tu conexión de host de GitLab en Cloud Build.
- HOST_URI es el URI de tu instancia de GitLab. Por ejemplo,
https://my-gle-server.net. - PROJECT_ID es el ID de tu proyecto Google Cloud .
- REGION es la región de tu conexión.
- API_TOKEN es el nombre de tu token con el
apipermiso. - READ_TOKEN es el nombre de tu token con el
read_apipermiso. - SECRET_VERSION es la versión de tu secreto.
- Tu secreto de webhook es WEBHOOK_SECRET.
Ya has creado una conexión de GitLab.
Rotar tokens de acceso de GitLab antiguos o caducados
Si tu token de acceso de GitLab caduca, la conexión de host de Cloud Build se desconectará de su repositorio de GitLab. Por lo tanto, verás errores en las siguientes circunstancias:
Cuando intentas vincular un repositorio de GitLab a una conexión de Cloud Build, aparece un mensaje
Failed to fetch repositories to link. Check that Cloud Build is still authorized to access data from the selected connection.En la página Activadores, cuando haces clic en Ejecutar, se abre la página Ejecutar activador y se muestra un mensaje
Failed to list branches. You can still enter one manually.
Para rotar un token antiguo o caducado de tu conexión, sigue estos pasos:
Busca los secretos asociados a tu conexión de host:
Ejecuta el siguiente comando:
gcloud builds connections describe CONNECTION_PATH --region=REGIONDonde:
- CONNECTION_PATH es la ruta de tu conexión de host de GitLab en Cloud Build, con el formato
projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME. - REGION es la región de tu conexión.
- CONNECTION_PATH es la ruta de tu conexión de host de GitLab en Cloud Build, con el formato
En el resultado del comando, busca los valores de los campos de tu token de usuario.
readAuthorizerCredential.userTokenSecretVersionmuestra el nombre de Secret Manager del tokenread_apiyauthorizerCredential.userTokenSecretVersionmuestra el nombre de Secret Manager del tokenapi. Estos nombres se almacenan como secretos en Secret Manager.
Rota cada token de acceso en GitLab:
Ve al repositorio de GitLab conectado a tu conexión de host de Cloud Build.
Sigue las instrucciones de la documentación de GitLab para rotar un token de acceso. Cuando rotas un token, GitLab crea un token con nuevas credenciales e invalida la versión anterior de ese token. El token renovado tiene los mismos permisos y el mismo ámbito que el token original.
Copia el ID del token renovado.
Crea una versión secreta para cada token:
Abre la página Secret Manager en la Google Cloud consola:
Por cada token que hayas rotado, busca el nombre secreto que hayas identificado en el paso 1 y haz clic en Acciones y, a continuación, en Añadir nueva versión.
En la ventana Añadir nueva versión, introduce el ID del token rotado y haz clic en Añadir nueva versión.
Siguientes pasos
- Consulta cómo conectar un repositorio de GitLab.
- Aprenda a compilar y desplegar sus cargas de trabajo en Google Cloud con componentes de CI/CD gestionados por Google en su flujo de trabajo de GitLab. Consulta GitLab en Google Cloud.