En esta página, se explica cómo conectar un host de GitLab Enterprise Edition a 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 de host de GitLab Enterprise Edition, debes obtener una clave de API para autenticar y aceptar 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 la 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:
- Cree webhooks: Cree 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 temporalmente los valores de tus tokens, 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 la consola de Google Cloud, 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: Es el nombre de la conexión de host.
URL del host: Es la URL del host de la 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: Es un certificado privado o autofirmado. El certificado no debe superar los 10 KB y debe tener el formato PEM (
.pem
,.cer
o.crt
). Si esta sección se deja en blanco, se utiliza un conjunto de certificados predeterminado.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 a tu cuenta de GitLab Enterprise Edition con permisos de lectura.
Token de acceso a la API: Es el token de acceso personal a tu cuenta de GitLab Enterprise Edition con permisos de la 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 a una red privada si Cloud Build conecta la instancia a través de una red de VPC existente mediante el Directorio de servicios.
[OPCIONAL] Servicio de Directorio de servicios: Si seleccionas Acceso a una red privada como Tipo de conexión, completa los siguientes pasos:
En Servicio del Directorio de servicios, 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: Selecciona el ID del proyecto de Google Cloud en el menú desplegable.
Región: En este campo, se preselecciona la región de tu conexión. La región especificada para tu servicio debe coincidir con la región asociada con la 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 Connect Repository (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. Después de la conexión con el host, Cloud Build también crea un secreto de webhook en tu nombre. Puedes ver y administrar tus secretos en la página del Secret Manager.
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 la conexión del host con la consola de Google Cloud, 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 versión más reciente 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 de recurso de tu secreto de webhook almacenado 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.
SSL_CA_FILE es tu certificado SSL para usar en solicitudes de GitLab Enterprise Edition (opcional). El certificado debe estar en formato PEM. Puedes usar la ruta de acceso del archivo local 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 de JSON. A diferencia de conectar el host a través de la consola de Google Cloud, debes almacenar de forma manual los tokens de acceso personal 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 Asigna la función de administrador de secretos a tu 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 de recurso de tu secreto de webhook almacenado en Secret Manager.
API_KEY_SECRET_VERSION es la clave de API de Google Cloud.
HOST_URI es el URI de host de tu instancia de GitLab Enterprise Edition.
SSL_CA es tu certificado SSL para usar en solicitudes de GitLab Enterprise Edition (opcional). El certificado debe estar en formato PEM y proporcionarse 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?
- Aprende a conectar un repositorio de GitLab Enterprise Edition.
- Aprende a realizar implementaciones azul-verde en Compute Engine.