En esta página, se explica cómo conectarse a un host de GitLab Enterprise Edition con Cloud Build.
Antes de comenzar
-
Habilita las API de Cloud Build and Secret Manager.
- Si no instalaste una instancia de GitLab Enterprise Edition Server, consulta la guía de instalación de GitLab Enterprise Edition para obtener instrucciones.
Configuración
Antes de crear una conexión con el host de GitLab Enterprise Edition, debes obtener una clave de API para autenticar y aceptar los eventos entrantes de GitLab Enterprise Edition. Además, debes crear tokens de acceso personal en GitLab Enterprise Edition para crear webhooks y recuperar datos de repositorio.
En esta sección, se analizan los pasos que debes completar antes de crear un activador de GitLab Enterprise Edition.
Obtén una clave de API
Para conectar los repositorios del host y autenticar los eventos de webhook entrantes, necesitas una clave de API.
Para obtener una clave de API, haz lo siguiente:
Abre la página Credenciales en Google Cloud Console:
Haz clic en Crear credenciales.
Haz clic en Clave de API.
Verás un diálogo con tu clave de API creada. Anota tu clave de API.
Si deseas restringir tu clave para aplicaciones de productos, haz clic en Restringir clave a fin de completar los pasos adicionales a fin de proteger tu clave. De lo contrario, haga clic en Cerrar.
Para obtener información sobre cómo restringir tu clave, consulta Aplica restricciones de clave de API.
Crea tokens de acceso personal
Debes crear dos tokens de acceso personal en GitLab Enterprise Edition para realizar las siguientes tareas:
- Crear webhooks: Crea un token de acceso personal con acceso a la API.
- Recupera datos del repositorio: Crea un token de acceso personal con acceso de read_api.
Después de crear tus tokens de acceso personal, guarda los valores de tus tokens de forma temporal, por ejemplo, en un archivo de texto sin formato. Luego, agregarás los tokens a Secret Manager, un almacén de credenciales que usarás con Cloud Build en pasos posteriores. Los tokens se usarán para conectar tu repositorio de GitLab Enterprise Edition a Cloud Build.
Conéctate a un host de GitLab Enterprise Edition
Consola
Para conectar el host de GitLab Enterprise Edition a Cloud Build mediante Google Cloud Console, sigue estos pasos:
Abre la página Administrar repositorios en Google Cloud Console:
Selecciona una Región en el menú desplegable.
Haz clic en Conectar host.
Selecciona GitLab Enterprise Edition.
Aparecerá el panel Conectar host.
Ingresa la siguiente información para conectar tu instancia de GitLab Enterprise Edition a Cloud Build:
Nombre: El nombre de tu conexión de host
URL del host: La URL del host de tu instancia de GitLab Enterprise Edition Por ejemplo,
https://gitlab.example.com
Clave de API de Google Cloud: La clave de API que se usa para autenticar tus credenciales.
[OPCIONAL] Certificado de CA: Certificado autofirmado o privado. El certificado no debe superar los 10 KB y tener el formato PEM (
.pem
,.cer
o.crt
). Si esta sección se deja en blanco, se usa un conjunto predeterminado de certificados.Nombre de usuario: el nombre de usuario de tu cuenta de GitLab Enterprise Edition Esta cuenta debe tener acceso de mantenimiento a los repositorios que deseas conectar con Cloud Build.
Token de acceso a la API de lectura: El token de acceso personal de tu cuenta de GitLab Enterprise Edition con permisos de lectura.
Token de acceso a la API: El token de acceso personal de tu cuenta de GitLab Enterprise Edition con permisos de API en proyectos y repositorios.
Tipo de conexión: selecciona Internet pública si Cloud Build se conecta a tu instancia a través de Internet pública. Selecciona Acceso privado a la red si Cloud Build conecta tu instancia mediante una red de VPC existente mediante el Directorio de servicios.
[OPCIONAL] Servicio de directorio de servicio: si seleccionas Acceso a la red privada como Tipo de conexión, completa los siguientes pasos:
En Servicio de directorio de servicio, selecciona la ubicación de tu servicio:
- En el proyecto
your-project
- En otro proyecto
Si seleccionas In another project, ingresa la siguiente información:
Project (Proyecto): selecciona el ID del proyecto de Google Cloud en el menú desplegable.
Región: Este campo preselecciona la región de tu conexión. La región especificada para tu servicio debe coincidir con la región asociada con tu conexión.
Espacio de nombres: selecciona el espacio de nombres de tu servicio.
Servicio: Selecciona el nombre del servicio en tu espacio de nombres.
- En el proyecto
Haz clic en Conectar host.
Aparecerá el panel Conectar repositorio.
Después de crear una conexión con el host, los tokens de acceso personal y la clave de API se almacenan de forma segura en Secret Manager. Luego de la conexión con el host, Cloud Build también crea un secreto de webhook por ti. Puedes ver y administrar tus secretos en la página del Administrador de secretos.
gcloud
Para conectar tu host de GitLab Enterprise Edition a Cloud Build con los comandos de gcloud
, debes ejecutar el comando gcloud alpha builds enterprise-config gitlab create
en tu terminal. A diferencia de cuando conectas tu host con Google Cloud Console, deberás almacenar de forma manual los tokens de acceso personal, la clave de API y el secreto de webhook en Secret Manager antes de ejecutar el siguiente 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
Reemplaza lo siguiente:
- GITLAB_ENTERPRISE_EDITION_CONFIG_NAME es el nombre de tu configuración de GitLab Enterprise Edition.
REGION es la región en la que se encuentra la configuración de GitLab Enterprise Edition.
USERNAME es tu nombre de usuario de GitLab Enterprise Edition.
HOST_URI es el URI del host de GitLab Enterprise Edition.
API_ACCESS_TOKEN_SECRET_VERSION es el nombre del recurso de tu token de acceso a la API almacenado en Secret Manager. El formato esperado para los secretos almacenados en Secret Manager es
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}
. Puedes especificarlatest
como tu versión para usar la última versión del secreto. Esto se aplica a cada recurso almacenado en Secret Manager.READ_ACCESS_TOKEN_SECRET_VERSION es el nombre del recurso de tu token de acceso de lectura almacenado en Secret Manager.
WEBHOOK_SECRET_SECRET_VERSION es el nombre del recurso de tu secreto de webhook que se almacena en Secret Manager.
API_KEY_SECRET_VERSION es la clave de API de Google Cloud.
[Opcional] SERVICE_DIRECTORY_SERVICE es el nombre del Directorio de servicios que se usa para comunicarse con la instancia de GitLab Enterprise Edition.
[Opcional] SSL_CA_FILE es el certificado SSL que se usa para las solicitudes a GitLab Enterprise Edition. El certificado debe estar en formato PEM. Puedes usar la ruta de acceso local del archivo para subir tu certificado.
API
Para conectar tu host de GitLab Enterprise Edition a Cloud Build con la API de Cloud Build, usa la siguiente plantilla JSON. A diferencia de conectar el host con Google Cloud Console, debes almacenar de forma manual los tokens de acceso personales y el secreto de webhook en Secret Manager antes de llamar a la 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"
}
}
}
Reemplaza lo siguiente:
- USERNAME es tu nombre de usuario de GitLab Enterprise Edition.
API_ACCESS_TOKEN_SECRET_VERSION es el nombre del recurso de tu token de acceso a la API almacenado en Secret Manager. Es posible que debas otorgar la función de Secret Manager a tu cuenta de servicio de Cloud Build,
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com
. Para obtener más información, consulta Cómo otorgar funciones de Secret Manager a la cuenta de servicio.READ_ACCESS_TOKEN_SECRET_VERSION es el nombre del recurso de tu token de acceso de lectura almacenado en Secret Manager.
WEBHOOK_SECRET_SECRET_VERSION es el nombre del recurso de tu secreto de webhook que se almacena en Secret Manager.
API_KEY_SECRET_VERSION es la clave de API de Google Cloud.
HOST_URI es el URI del host de tu instancia de GitLab Enterprise Edition.
[Opcional] SSL_CA es el certificado SSL que se usa para las solicitudes a GitLab Enterprise Edition. El certificado debe estar en formato PEM y se debe proporcionar como una string.
[Opcional] SERVICE_DIRECTORY_SERVICE es el nombre del servicio del Directorio de servicios que se usa para comunicarse con la instancia de GitLab Enterprise Edition.
Ingresa el siguiente comando curl
en tu 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
Reemplaza lo siguiente:
- PROJECT_ID es tu ID del proyecto de Cloud.
REGION es la región en la que se encuentra la configuración de GitLab Enterprise Edition.
GITLAB_ENTERPRISE_EDITION_CONFIG_NAME es el nombre de tu configuración de GitLab Enterprise Edition.
¿Qué sigue?
- Obtén más información sobre cómo conectar un repositorio de GitLab Enterprise Edition.