Conéctate a un host de GitLab

En esta página, se explica cómo conectar un host de GitLab a Cloud Build.

Antes de comenzar

  • 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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:

  1. Accede a tu instancia de GitLab.

  2. En la página de GitLab de tu instancia, haz clic en tu avatar, en la esquina superior derecha.

  3. Haz clic en Editar perfil.

  4. En la barra lateral izquierda, selecciona Tokens de acceso.

    Verás la página Tokens de acceso personal.

  5. Crea un token de acceso con el permiso api para conectar y desconectar repositorios.

  6. Crea un token de acceso con el alcance read_api para garantizar 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:

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abrir la página repositorios

    Verás la página Repositorios.

  2. En la parte superior de la página, selecciona la pestaña 2ª gen..

  3. En el selector de proyectos de la barra superior, selecciona tu proyecto Google Cloud .

  4. Haz clic en Crear conexión de host para conectar un host nuevo a Cloud Build.

  5. En el panel izquierdo, selecciona GitLab como tu proveedor de fuentes.

  6. En la sección Configurar conexión, ingresa la siguiente información:

    1. Región: Selecciona una región para tu conexión.

    2. Nombre: Ingresa un nombre para tu conexión.

  7. En la sección Detalles del host, selecciona o ingresa la siguiente información:

    1. Proveedor de GitLab: Selecciona GitLab.com como tu proveedor.
  8. En la sección Tokens de acceso personal, ingresa la siguiente información:

    1. Token de acceso a la API: Ingresa el token con acceso al permiso api. Este token se usa para conectar y desconectar repositorios.

    2. Token de acceso a la API de lectura: Ingresa el token con acceso al permiso read_api. Los activadores de Cloud Build usan este token para acceder al código fuente en los repositorios.

  9. Haz clic en Conectar.

    Después de hacer clic en el botón Conectar, tus tokens de acceso personal se almacenarán 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:

  1. Almacena tu token en Secret Manager.

  2. 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=-
    
  3. Si almacenas tus secretos en un proyecto Google Cloud diferente 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 de tu proyecto de Google Cloud .

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:

  1. 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_VERSION
    

    Aquí:

    • CONNECTION_NAME es el nombre de la conexión del 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 de Google Cloud .
    • REGION es la región de tu conexión.
    • API_TOKEN es el nombre de tu token con el alcance de api.
    • READ_TOKEN es el nombre de tu token con el alcance de 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.

Rotar tokens de acceso de GitLab antiguos o vencidos

Si vence tu token de acceso de GitLab, se desconectará la conexión del host de Cloud Build con su repositorio de GitLab. Como resultado, verás errores en las siguientes circunstancias:

  • Cuando intentas vincular un repositorio de GitLab a la conexión de Cloud Build, aparece un mensaje de 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 de Failed to list branches. You can still enter one manually.

Para rotar un token antiguo o vencido para tu conexión, haz lo siguiente:

  1. Busca los secretos asociados con la conexión del host:

    1. Ejecuta el comando siguiente:

      gcloud builds connections describe CONNECTION_PATH --region=REGION
      

      Aquí:

      • CONNECTION_PATH es la ruta de acceso de la conexión del 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.
    2. En el resultado del comando, busca los valores de los campos de tu token de usuario. readAuthorizerCredential.userTokenSecretVersion muestra el nombre de Secret Manager del token read_api, y authorizerCredential.userTokenSecretVersion muestra el nombre de Secret Manager del token api. Estos nombres se almacenan como secretos en Secret Manager.

  2. Rota cada token de acceso en GitLab:

    1. Ve al repositorio de GitLab conectado a tu conexión de host de Cloud Build.

    2. Sigue las instrucciones de la documentación de GitLab para rotar un token de acceso. Cuando rotas un token, GitLab crea uno nuevo con credenciales nuevas y anula la versión anterior de ese token. El token rotado tiene los mismos permisos y alcance que el token original.

    3. Copia el ID del token rotado.

  3. Crea una nueva versión del secreto para cada token:

    1. Abre la página Secret Manager en la consola de Google Cloud :

      Abrir la página Administrador de secretos

    2. Para cada token que rotaste, busca el nombre del secreto que identificaste en el paso 1, haz clic en Acciones y, luego, en Agregar nueva versión.

    3. En la ventana Agregar versión nueva, ingresa el ID de tu token rotado y, luego, haz clic en Agregar versión nueva.

Para obtener más información, consulta Vencimiento del token de acceso en la documentación de GitLab.

¿Qué sigue?