En esta página se explica cómo conectarse a un host de Bitbucket Server en Cloud Build.
Antes de empezar
-
Enable the Cloud Build, Secret Manager, and Compute Engine APIs.
- Si no has instalado una instancia de Bitbucket Server, consulta la guía de instalación de Bitbucket Server para obtener instrucciones.
Configurando
Antes de conectar tu host de Bitbucket Server, debes obtener una clave de API para autenticar y aceptar los eventos entrantes de Bitbucket Server. Además, debes conceder permisos de gestión de identidades y accesos en tu Google Cloud proyecto para crear tokens de acceso personales en Bitbucket Server, crear webhooks y recuperar datos de repositorios.
Obtener una clave de API
Para conectar tu host y autenticar eventos de webhook entrantes, necesitas una clave de API.
Para obtener una clave de API, sigue estos pasos:
Abre la página Credenciales en la consola de Google Cloud :
Haz clic en Crear credenciales.
Haz clic en Clave de API.
Verás un cuadro de diálogo con la clave de API que has creado. Anota tu clave de API.
Si quieres restringir tu clave para aplicaciones de productos, haz clic en Restringir clave para completar los pasos adicionales para proteger tu clave. De lo contrario, haz clic en Cerrar.
Para saber cómo restringir tu clave, consulta el artículo Aplicar restricciones a claves de API.
Permisos de gestión de identidades y accesos necesarios
Para conectar tu host de Bitbucket Server, concede los roles Editor de Cloud Build (roles/cloudbuild.builds.editor
) y Propietario de integraciones de Cloud Build (cloudbuild.integrations.owner
) a tu cuenta de usuario.
Para añadir los roles necesarios a tu cuenta de usuario, consulta el artículo Configurar el acceso a recursos de Cloud Build. Para obtener más información sobre los roles de gestión de identidades y accesos asociados a Cloud Build, consulta Roles y permisos de gestión de identidades y accesos.
Crear tokens de acceso personales
Debes crear dos tokens de acceso personales en Bitbucket Server para realizar las siguientes tareas:
- Crear webhooks: crea un token de acceso personal con acceso de administrador.
- Obtener datos de repositorios: crea un token de acceso personal con acceso de lectura. También puedes crear un token que tenga acceso de lectura y escritura.
Estos tokens de acceso personal son los permisos mínimos necesarios. Es posible que tengas que configurar permisos adicionales en Bitbucket Server según sea necesario. Por ejemplo, puedes seleccionar Cuenta de Bitbucket Server para tener acceso solo a un subconjunto de los repositorios de tu instancia de Bitbucket Server y, de esta forma, controlar con mayor precisión lo que está disponible en Cloud Build.
Una vez que hayas creado tus tokens de acceso personales, guarda los valores de los tokens de forma segura para conectarte a tu repositorio de Bitbucket Server.
Conectarse a un host de Bitbucket Server
Consola
Para conectar tu host de Bitbucket Server a Cloud Build mediante la consola de Google Cloud , sigue estos pasos:
Abre la página Repositorios en la consola de Google Cloud :
En la parte superior de la página, selecciona la pestaña 1.ª gen..
Haz clic en Conectar host.
Selecciona Bitbucket Server en el menú desplegable.
Verás el panel Conectar host.
Introduce la siguiente información para conectar tu instancia de Bitbucket Server a Cloud Build:
Región: selecciona la región de tu conexión.
Nombre: introduce un nombre para la conexión.
URL del host: la URL del host de tu instancia de Bitbucket Server. Por ejemplo,
https://bbs.example-test.com:7990
.Google Cloud Clave de API: clave de API que se usa para autenticar tus credenciales.
Certificado de AC: tu certificado autofirmado. El tamaño del certificado no debe superar los 10 KB y debe estar en formato PEM (
.pem
,.cer
o.crt
). Si se deja en blanco, se usará un conjunto de certificados predeterminado.Nombre de usuario: el nombre de usuario de tu cuenta de Bitbucket Server. Esta cuenta debe tener acceso de administrador a los repositorios que quieras conectar con Cloud Build.
Token de acceso de lectura: token de acceso personal de tu cuenta de Bitbucket Server con permisos de lectura.
Token de acceso de administrador: token de acceso personal de tu cuenta de Bitbucket Server con permisos de administrador en proyectos y repositorios.
En Tipo de red, seleccione una de las siguientes opciones:
Internet público: selecciona esta opción si se puede acceder a tu instancia a través de Internet público.
Red privada: selecciona esta opción si tu instancia está alojada en una red privada.
Proyecto: selecciona el Google Cloud ID de proyecto.
Red: selecciona tu red en el menú desplegable. Si no has creado ninguna red, consulta el artículo Crear y gestionar redes de VPC para saber cómo crear una.
Intervalo de IPs: introduce el intervalo de IPs internas que se pueden asignar a las VMs dentro del intervalo asignado de una red emparejada.
Puede especificar el intervalo mediante la notación de enrutamiento de interdominios sin clases (CIDR) con el formato
STARTING_IP/SUBNET_PREFIX_SIZE
. Por ejemplo,192.0.2.0/24
tiene una longitud de prefijo de 24. Los primeros 24 bits del intervalo de IP se usan como máscara de subred (192.0.2.0
), mientras que las posibles direcciones de host van de192.0.2.0
a192.0.2.255
.El valor de la longitud del prefijo no debe superar
/29
. Si no se especifica ningún valor para el intervalo, se asigna automáticamente el valor predeterminado/24
. Si no se especifica ningún valor para la longitud del prefijo, las direcciones IP se asignan automáticamente en la red de VPC emparejada. Si no se especifica ningún valor para la dirección IP, se le asigna automáticamente un intervalo dentro de la red VPC emparejada.
Haz clic en Conectar host.
Si tu instancia de Bitbucket Server está en una red emparejada, la conexión de tu host puede tardar varios minutos en completarse.
Se te redirigirá al panel Conectar repositorio.
Después de crear una conexión de host, tus tokens de acceso personal y el secreto del webhook se almacenarán de forma segura en Secret Manager. Puedes ver y gestionar tus secretos en la página Secret Manager.
gcloud
Para conectar tu host de Bitbucket Server a Cloud Build mediante comandos gcloud
, debes ejecutar el comando gcloud alpha builds enterprise-config bitbucketserver create
en tu terminal. A diferencia de cuando conectas tu host mediante la consolaGoogle Cloud , tendrás que almacenar manualmente tus tokens de acceso personales y el secreto del webhook en Secret Manager antes de ejecutar el siguiente comando:
gcloud alpha builds enterprise-config bitbucketserver create
--name=BITBUCKET_SERVER_CONFIG_NAME \
--user-name=USERNAME \
--host-uri=HOST_URI \
--admin-access-token-secret-version=ADMIN_ACCESS_TOKEN_SECRET_VERSION \
--read-access-token-secret-version=READ_ACCESS_TOKEN_SECRET_VERSION \
--webhook-secret-secret-version=WEBHOOK_SECRET_SECRET_VERSION \
--api-key=API_KEY \
--peered-network=PEERED_NETWORK \
--peered-network-ip-range=PEERED_NETWORK_IP_RANGE \
--ssl-ca-file=SSL_CA_FILE
Donde:
- BITBUCKET_SERVER_CONFIG_NAME es el nombre de tu configuración de Bitbucket Server.
- USERNAME es tu nombre de usuario de Bitbucket Server.
- HOST_URI es el URI de host de tu instancia de Bitbucket Server.
- ADMIN_ACCESS_TOKEN_SECRET_VERSION es el nombre del recurso de tu token de acceso de administrador almacenado en Secret Manager. El formato esperado de los secretos almacenados en Secret Manager es
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}
. Puedes especificarlatest
como versión para usar la versión más reciente de tu 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 almacenado en Secret Manager.
- API_KEY es la clave de API. Google Cloud
[Opcional] PEERED_NETWORK es la red de VPC a la que se conectarán tus instancias de Bitbucket Server on-premise. Para obtener más información, consulta Crear repositorios desde Bitbucket Server en una red privada.
[Opcional] PEERED_NETWORK_IP_RANGE es el intervalo de IP interna que se puede asignar a las VMs dentro del intervalo asignado de una red emparejada.
SSL_CA_FILE es la ruta a un archivo local que contiene el certificado SSL que quieres usar para las solicitudes a Bitbucket Server. El certificado debe estar en formato PEM.
API
Para conectar tu host de Bitbucket Server a Cloud Build mediante la API, usa la siguiente plantilla JSON. A diferencia de lo que ocurre al conectar tu host mediante la consola Google Cloud , debes almacenar manualmente tus tokens de acceso personales y el secreto del webhook en Secret Manager antes de llamar a la API:
{
"hostUri": "HOST_URI",
"username": "USERNAME",
"apiKey": "API_KEY",
"secrets": {
"adminAccessTokenVersionName": "ADMIN_ACCESS_TOKEN_SECRET_VERSION",
"readAccessTokenVersionName": "READ_ACCESS_TOKEN_SECRET_VERSION",
"webhookSecretVersionName": "WEBHOOK_SECRET_SECRET_VERSION",
},
"peeredNetwork": "PEERED_NETWORK",
"peeredNetworkIpRange": "PEERED_NETWORK_IP_RANGE",
"sslCa": "SSL_CERTIFICATE"
}
Donde:
- HOST_URI es el URI de host de tu instancia de Bitbucket Server.
- USERNAME es tu nombre de usuario de Bitbucket Server.
- API_KEY es la clave de API. Google Cloud
ADMIN_ACCESS_TOKEN_SECRET_VERSION es el nombre del recurso de tu token de acceso de administrador almacenado en Secret Manager. Es posible que tengas que asignar el rol Permiso para acceder a los recursos de Secret Manager a tu agente de servicio de Cloud Build,
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com
. Para obtener más información, consulta Asignar el rol de Secret Manager 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 del recurso de tu secreto de webhook almacenado en Secret Manager.
[Opcional] PEERED_NETWORK es la red de VPC con la que se emparejarán tus instancias de Bitbucket Server on-premise.
Puede especificar el intervalo mediante la notación de enrutamiento de interdominios sin clases (CIDR) en el formato
STARTING_IP/SUBNET_PREFIX_SIZE
. Por ejemplo,192.0.2.0/24
tiene una longitud de prefijo de 24. Los primeros 24 bits del intervalo de IP se usan como máscara de subred (192.0.2.0
), mientras que las direcciones de host posibles van de192.0.2.0
a192.0.2.225
.[Opcional] PEERED_NETWORK_IP_RANGE es el intervalo de IP interna que se puede asignar a las VMs dentro del intervalo asignado de una red emparejada.
[Opcional] SSL_CERTIFICATE es el certificado SSL que se usa en tus instancias de Bitbucket Server locales.
Introduce 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" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_SERVER_CONFIG_NAME -d @config.json
Donde:
- PROJECT_NUMBER es el número de tu proyecto de Cloud.
- PROJECT_ID es el ID de tu proyecto de Cloud.
- REGION es la región asociada a tu configuración de Bitbucket Server.
- BITBUCKET_SERVER_CONFIG_NAME es el nombre de tu configuración de Bitbucket Server.
Si la petición se realiza correctamente, el cuerpo de la respuesta contiene una instancia Operation recién creada.
Introduce el siguiente comando curl
en tu terminal:
curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Donde:
- PROJECT_NUMBER es el número de tu proyecto de Cloud.
- PROJECT_ID es el ID de tu proyecto de Cloud.
- REGION es la región asociada a tu configuración de Bitbucket Server.
- OPERATION_ID es el ID de la operación de creación de la configuración de Bitbucket Server.
Es posible que tengas que seguir ejecutando el comando de la API GetOperation
hasta que la respuesta contenga done: true
, lo que indica que la operación se ha completado. Si la configuración de Bitbucket Server se crea correctamente, la verá en el campo response.value
. De lo contrario, consulta el campo error
para ver un informe de errores detallado.
Siguientes pasos
- Consulta cómo conectar un repositorio de Bitbucket Server.
- Consulta cómo realizar implementaciones azul/verde en Compute Engine.