Conectarse a un host de Bitbucket Data Center

En esta página se explica cómo conectar un host de Bitbucket Data Center a Cloud Build. Al conectarse a un host de Bitbucket Data Center, se integran sus repositorios de Bitbucket Data Center con Cloud Build. De esta forma, puedes configurar activadores de compilación para compilar repositorios de Bitbucket Data Center y compilar repositorios de Bitbucket Data Center en una red privada.

Antes de empezar

  • Enable the Cloud Build, Secret Manager, and Compute Engine 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

Permisos de gestión de identidades y accesos necesarios

Para obtener los permisos que necesitas para conectarte a tu host de Bitbucket Data Center, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu cuenta de usuario:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Si tu instancia de Bitbucket Data Center está alojada en una red privada, consulta el artículo Crear repositorios de Bitbucket Data Center en una red privada para obtener información sobre los roles de gestión de identidades y accesos adicionales que se necesitan para configurar una conexión de host.

Crear tokens de acceso personal

Antes de crear una conexión de host para tu instancia de Bitbucket Data Center, crea tokens de acceso personales en Bitbucket Data Center siguiendo estos pasos:

  1. Inicia sesión en tu instancia de Bitbucket Data Center.

  2. Sigue las instrucciones para crear tokens de acceso HTTP para tu cuenta de usuario.

    1. Crea un token de acceso con el permiso administrador de repositorios para conectar y desconectar repositorios.

    2. Crea un token de acceso con el ámbito repository read para asegurarte de que los repositorios de Cloud Build puedan acceder al código fuente de los repositorios.

  3. Guarda los valores de token de forma segura. Las usarás para conectarte a tu repositorio de Bitbucket Data Center.

Conectarse a un host de Bitbucket Data Center

Consola

Para conectar tu host de Bitbucket Data Center a Cloud Build mediante la consola de Google Cloud , sigue estos pasos:

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

    Abre la página Repositorios.

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

  3. Haz clic en Conectar host.

  4. Selecciona Bitbucket Data Center en el menú desplegable.

    Verás el panel Conectar anfitrión.

    Introduce la siguiente información para conectar tu instancia de Bitbucket Data Center a Cloud Build:

    1. Región: selecciona la región de tu conexión.

    2. Nombre: introduce un nombre para la conexión.

    3. URL del host: la URL del host de su instancia de Bitbucket Data Center. Por ejemplo, https://bbs.example-test.com:7990.

    4. Google Cloud Clave de API: introduce la clave de API que se usa para autenticar tus credenciales.

    5. 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 deja esta sección en blanco, Google Cloud usará un certificado del conjunto de certificados predeterminado.

    6. Nombre de usuario: el nombre de usuario de tu cuenta de Bitbucket Data Center. Esta cuenta debe tener acceso de administrador a los repositorios que quieras conectar con Cloud Build.

    7. Token de acceso de lectura: introduce el token de acceso personal de tu cuenta de Bitbucket Data Center con permisos de lectura.

    8. Token de acceso de administrador: introduce el token de acceso personal de tu cuenta de Bitbucket Data Center con permisos de administrador en proyectos y repositorios.

    9. En Tipo de red, seleccione una de las siguientes opciones:

      1. Internet público: selecciona esta opción si se puede acceder a tu instancia a través de Internet público.

      2. Red privada: selecciona esta opción si tu instancia está alojada en una red privada.

        1. Proyecto: selecciona tu Google Cloud ID de proyecto.

        2. 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.

        3. 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 direcciones de host posibles van de 192.0.2.0 a 192.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.

  5. Haz clic en Conectar host.

    Si tu instancia de Bitbucket Data Center 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 de 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 Data Center a Cloud Build mediante comandos gcloud, debes ejecutar el comando gcloud alpha builds enterprise-config bitbucket-data-center 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 bitbucket-data-center create
    --name=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:

  • CONFIG_NAME es el nombre de tu configuración de Bitbucket Data Center.
  • USERNAME es tu nombre de usuario de Bitbucket Data Center.
  • HOST_URI es el URI de host de tu instancia de Bitbucket Data Center.
  • 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 especificar latest 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 Google Cloud clave de API.
  • Opcional: PEERED_NETWORK es la red de VPC a la que conectarse para tus instancias de Bitbucket Data Center locales. Para obtener más información, consulta el artículo Crear repositorios desde Bitbucket Data Center en una red privada.

  • Opcional: PEERED_NETWORK_IP_RANGE es el intervalo de IPs internas que se pueden 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 Data Center. El certificado debe estar en formato PEM.

API

Para conectar tu host de Bitbucket Data Center a Cloud Build mediante la API, usa la siguiente plantilla JSON. A diferencia de cuando conectas 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 Data Center.
  • USERNAME es tu nombre de usuario de Bitbucket Data Center.
  • API_KEY es la Google Cloud clave de API.
  • 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 on-premise de Bitbucket Data Center.

    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 de 192.0.2.0 a 192.0.2.225.

  • Opcional: PEERED_NETWORK_IP_RANGE es el intervalo de IPs internas que se pueden 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 Data Center 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" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=CONFIG_NAME -d @config.json

Donde:

  • PROJECT_ID es el Google Cloud ID de tu proyecto.
  • REGION es la región asociada a tu configuración de Bitbucket Data Center.
  • CONFIG_NAME es el nombre de tu configuración de Bitbucket Data Center.

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 Google Cloud .
  • PROJECT_ID es el ID de tu proyecto Google Cloud .
  • REGION es la región asociada a tu configuración de Bitbucket Data Center.
  • OPERATION_ID es el ID de la operación de creación de la configuración de Bitbucket Data Center.

Puede 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 Data Center se crea correctamente, la verá en el campo response.value. De lo contrario, consulta el campo error para ver un informe de errores detallado.

Rotar tokens de acceso antiguos o caducados de Bitbucket Data Center

Si tu token de acceso de Bitbucket Data Center caduca, la conexión de tu host de Cloud Build se desconectará de su repositorio de Bitbucket Data Center. Por lo tanto, verás errores en las siguientes circunstancias:

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

Para rotar un token antiguo o caducado de tu conexión, sigue estos pasos:

  1. Busca los secretos asociados a tu conexión de host:

    1. Ejecuta el siguiente comando:

      gcloud builds connections describe CONNECTION_PATH --region=REGION
      

      Donde:

      • CONNECTION_PATH es la ruta de la conexión de host de Bitbucket Data Center 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 y authorizerCredential.userTokenSecretVersion muestra el nombre de Secret Manager del token Admin. Estos nombres se almacenan como secretos en Secret Manager.

  2. Rota cada token de acceso en Bitbucket Data Center:

    1. Ve al repositorio de Bitbucket Data Center conectado a tu conexión de host de Cloud Build.

    2. Sigue las instrucciones de la documentación de Bitbucket para rotar un token de acceso. Cuando rotas un token, Bitbucket Data Center crea un token nuevo con credenciales nuevas e invalida la versión anterior de ese token. El token renovado tiene los mismos permisos y el mismo ámbito que el token original.

    3. Copia el ID del token renovado.

  3. Crea una versión secreta para cada token:

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

      Abre la página Secret Manager.

    2. Por cada token que hayas rotado, busca el nombre secreto que hayas identificado en el paso 1 y haz clic en Acciones y, a continuación, en Añadir nueva versión.

    3. En la ventana Añadir nueva versión, introduce el ID del token rotado y haz clic en Añadir nueva versión.

Para obtener más información, consulta los artículos Tokens de acceso y Mejorar la seguridad en Bitbucket: presentación de la caducidad de los tokens de acceso en la documentación de Bitbucket Data Center.

Siguientes pasos