En esta página, se explica cómo conectar un host de GitLab a Cloud Build.
Antes de comenzar
Habilita las APIs de Cloud Build y Secret Manager.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén información para otorgar roles.
Conéctate 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. Para ello, completa los siguientes pasos:
Accede a tu instancia de GitLab.
En la página de GitLab de tu instancia, haz clic en tu avatar, en la esquina superior derecha.
Haz clic en Editar el perfil.
En la barra lateral izquierda, selecciona Tokens de acceso.
Verás la página Tokens de acceso personal.
Crea un token de acceso con el permiso
apipara usarlo para conectar y desconectar repositorios.Crea un token de acceso con el permiso
read_apipara asegurarte de que los repositorios de Cloud Build puedan acceder al código fuente en los repositorios.
Console
Para conectar tu host de GitLab a Cloud Build, haz lo siguiente:
Abre la página Repositorios en la Google Cloud console.
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 izquierdo, selecciona GitLab como tu proveedor de origen.
En la sección Configurar conexión, ingresa la siguiente información:
Región: Selecciona una región para tu conexión.
Nombre: Ingresa un nombre para tu conexión.
En la sección Detalles del host, ve a Host de GitLab y selecciona GitLab.com.
Opcional: Si deseas administrar las claves de encriptación que se usan para encriptar los tokens de acceso de tus repositorios de GitLab, ve a la sección Encriptación y elige una clave de Cloud Key Management Service. Para obtener más información, consulta Habilita las claves de encriptación administradas por el cliente para Secret Manager.
En la sección Tokens de acceso personal, ingresa la siguiente información:
Token de acceso a la API: Ingresa el token con el acceso al permiso
api. Este token se usa para conectar y desconectar repositorios.Token de acceso a la API de lectura: Ingresa el token con el acceso al permiso
read_apiscope. Los activadores de Cloud Build usan este token para acceder al código fuente en los repositorios.
Haz clic en Conectar.
Después de hacer clic en el botón Conectar, tus tokens de acceso personal se almacenan de forma segura en Secret Manager. Después de la conexión del host, Cloud Build también crea un secreto de webhook en tu nombre. Puedes ver y administrar tus secretos en la página de Secret Manager.
Ya creaste correctamente una conexión de GitLab.
gcloud
Antes de conectar tu host de GitLab a Cloud Build, completa los siguientes pasos para almacenar tus credenciales:
Para crear 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 Google Cloud proyectodiferente del que planeas usar para crear una conexión de host, ingresa el siguiente comando para otorgar 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"Aquí:
- PROJECT_ID es el ID del Google Cloud proyecto.
Ahora puedes conectar tu host de GitLab a Cloud Build.
Completa los siguientes pasos:
Para conectar tu host de GitLab a Cloud Build, haz lo siguiente:
Ingresa 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_VERSIONAquí:
- CONNECTION_NAME es un nombre para la conexión de tu 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 del Google Cloud proyecto.
- REGION es la región de tu conexión.
- API_TOKEN es el nombre de tu token con el permiso
api. - READ_TOKEN es el nombre de tu token con el permiso
read_api. - SECRET_VERSION es la versión de tu secreto.
- WEBHOOK_SECRET es tu secreto de webhook.
Ya creaste correctamente una conexión de GitLab.
Rota los tokens de acceso de GitLab antiguos o vencidos
Rota tus tokens de acceso para que la conexión de host de Cloud Build pueda mantener su conexión con tu repositorio de GitLab. Si vence tu token de acceso de GitLab, la conexión de host de Cloud Build se desconecta de su repositorio de GitLab. Cuando esto sucede, no puedes inhabilitar la conexión ni vincular un repositorio hasta que rotes el token vencido. Además, verás errores en las siguientes circunstancias:
La página Detalles de la conexión de tu conexión muestra un mensaje de error que indica
Connection is disconnected due to an invalid or expired access token.Si intentas vincular un repositorio a una conexión que tiene un token vencido, verás un mensaje de Token de acceso no válido. Si haces clic en Ver conexión , se te dirigirá a la página Detalles de la conexión de la conexión con el token vencido.
Cloud Build te permite rotar tokens de acceso ingresando valores de token nuevos y guardándolos en Secret Manager en la versión más reciente del secreto para esos tokens. Para rotar tus tokens de acceso, haz lo siguiente:
Rota cada token de acceso en GitLab:
Ve al repositorio de GitLab conectado a la 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 nuevo con credenciales nuevas y desactiva la versión anterior de ese token. El token rotado tiene los mismos permisos y alcance que el token original.
Copia los IDs de los tokens rotados.
Actualiza tu token de acceso en Cloud Build:
Ve a la página Detalles de la conexión de tu conexión.
Selecciona Actualizar tokens de acceso.
En el menú Rotación de tokens, ingresa tus tokens nuevos en los campos Token de acceso a la API y Token de acceso de lectura.
(Opcional) Si deseas que tu conexión siempre use la versión más reciente del secreto para tus tokens, selecciona Actualizar la conexión para usar siempre la versión más reciente. Dejar esta opción sin seleccionar puede ser útil si tu conexión usa un número de versión de secreto específico.
Selecciona Actualizar para guardar los cambios.
Cloud Build guarda los tokens de acceso nuevos como la versión más reciente de tu secreto en Secret Manager.
¿Qué sigue?
- Obtén información para conectar un repositorio de GitLab.
- Obtén información para compilar e implementar tus cargas de trabajo en Google Cloud usando componentes de CI/CD administrados por Google en tu canalización de GitLab. Consulta GitLab en Google Cloud.