Conéctate a un host del servidor de Bitbucket

En esta página, se explica cómo conectarse a un host del servidor de Bitbucket con Cloud Build.

Antes de comenzar

  • Habilita las API de Cloud Build, Secret Manager, and Compute Engine.

    Habilita las API

Configuración

Antes de conectar el host de Bitbucket Server, debes obtener una clave de API para autenticar y aceptar eventos entrantes de Bitbucket Server. Además, debes otorgar permisos de IAM en tu proyecto de Google Cloud para crear tokens de acceso personal en Bitbucket Server a fin de crear webhooks y recuperar datos de repositorio.

Obtén una clave de API

Para conectar el host y autenticar los eventos de webhook entrantes, necesitas una clave de API.

Para obtener una clave de API, haz lo siguiente:

  1. Abre la página Credenciales en Google Cloud Console:

    Abre la página Credenciales.

  2. Haz clic en Crear credenciales.

  3. Haz clic en Clave de API.

    Verás un diálogo con tu clave de API creada. Anota tu clave de API.

  4. Si deseas restringir la clave para las aplicaciones de producto, haz clic en Restringir clave a fin de completar los pasos adicionales para proteger la clave. De lo contrario, haga clic en Cerrar.

    Para obtener información sobre cómo restringir tu clave, consulta Cómo aplicar restricciones de claves de API.

Permisos de IAM obligatorios

Para conectar tu host de Bitbucket Server, otorga la función de editor de Cloud Build (roles/cloudbuild.builds.editor) y la función de propietario de integraciones de Cloud Build (cloudbuild.integrations.owner) a tu cuenta de usuario.

Para agregar las funciones necesarias a tu cuenta de usuario, consulta Configura el acceso a los recursos de Cloud Build. Para obtener más información sobre las funciones de IAM asociadas con Cloud Build, consulta Funciones y permisos de IAM.

Crea tokens de acceso personal

Debes crear dos tokens de acceso personal en Bitbucket Server para realizar las siguientes tareas:

Estos tokens de acceso personal son los permisos mínimos necesarios. Es posible que debas configurar permisos adicionales en el servidor de Bitbucket según sea necesario. Por ejemplo, puedes seleccionar Cuenta de servidor de bucket para tener acceso solo a un subconjunto de repositorios en tu instancia de Bitbucket Server a fin de permitir un control más preciso sobre lo que está disponible en Cloud Build.

Después de crear tus tokens de acceso personal, guarda los valores de tus tokens de forma segura para conectarte a tu repositorio de Bitbucket Server.

Conectarse a un host del servidor de Bitbucket

Console

Para conectar el host del servidor de Bitbucket a Cloud Build con Google Cloud Console, sigue estos pasos:

  1. Abre la página Administrar repositorios en Google Cloud Console:

    Abrir la página Administrar repositorios

  2. Haz clic en Conectar host.

    Verá el panel Conectar host.

    Ingresa la siguiente información para conectar tu instancia de Bitbucket Server a Cloud Build:

    • URL del host: Es la URL del host de la instancia de Bitbucket Server. Por ejemplo, https://bbs.example-test.com:7990.
    • Clave de API de Google Cloud: La clave de API que se utiliza para autenticar tus credenciales.
    • [OPCIONAL] Certificado de CA: Tu certificado 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 utilizará un conjunto predeterminado de certificados.

    • Nombre de usuario: el nombre de usuario de tu cuenta de Bitbucket Server Esta cuenta debe tener acceso de administrador a los repositorios que deseas conectar con Cloud Build.

    • Token de acceso de lectura: Es el token de acceso personal de tu cuenta de Bitbucket Server con permisos de lectura.

    • Token de acceso de administrador: Es el token de acceso personal de tu cuenta de Bitbucket Server con permisos de administrador en proyectos y repositorios.

    • [OPCIONAL] Proyecto de red: El ID del proyecto de red correspondiente a la red local.

    • [OPCIONAL] Nombre de la red: El nombre de tu red local.

  3. Haz clic en Conectar host.

    Si tu instancia de Bitbucket Server se encuentra en una red con intercambio de tráfico, la conexión del host puede tardar varios minutos en completarse.

    Se te redireccionará al panel Conectar repositorio.

    Después de crear una conexión de host, tus tokens de acceso personales y tu secreto de webhook se almacenarán de forma segura en Secret Manager. Puedes ver y administrar tus Secrets en la página del Secret Manager.

gcloud

Para conectar tu host de Bitbucket Server a Cloud Build con comandos gcloud, debes ejecutar el comando gcloud alpha builds enterprise-config bitbucketserver create en tu terminal. A diferencia de conectar el host con Google Cloud Console, deberás almacenar de forma manual los tokens de acceso personales y el secreto de 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 \
    --ssl-ca-file=SSL_CA_FILE

Donde:

  • BITBUCKET_SERVER_CONFIG_NAME es el nombre de tu configuración de servidor de bucket.
  • USERNAME es tu nombre de usuario de Bitbucket Server.
  • HOST_URI es el URI del 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 para los Secrets almacenados en Secret Manager es projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}. Puedes especificar latest 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 almacenado en Secret Manager.
  • API_KEY es la clave de API de Google Cloud.
  • PEERED_NETWORK es la red de VPC para conectarse a las instancias de Bitbucket Server (opcional)
  • SSL_CA_FILE es la ruta a un archivo local que contiene el certificado SSL que se usará para las solicitudes a Bitbucket Server. El certificado debe estar en formato PEM.

API

Para conectar el host de Bitbucket Server a Cloud Build con la API, usa la siguiente plantilla de JSON. A diferencia de conectar tu host con Google Cloud Console, debes almacenar manualmente tus tokens de acceso personales y tu secreto de 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,
      "sslCa": SSL_CERTIFICATE
  }

Donde:

  • HOST_URI es el URI del host de tu instancia de Bitbucket Server.
  • USERNAME es tu nombre de usuario de Bitbucket Server.
  • API_KEY es la clave de API de 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 debas otorgar la función de administrador de secretos 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 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 del recurso de tu secreto de webhook almacenado en Secret Manager.

  • PEERED_NETWORK es la red de VPC con la que puedes intercambiar tráfico en las instancias locales de Bitbucket Server (opcional).

  • [Opcional] SSL_CERTIFICATE es el certificado SSL que se usa para tus instancias de Bitbucket Server de forma local.

Ingresa el siguiente comando de 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/global/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_SERVER_CONFIG_NAME -d @config.json

Donde:

  • PROJECT_NUMBER es el número de proyecto de Cloud.
  • PROJECT_ID es el ID del proyecto de Cloud.
  • BITBUCKET_SERVER_CONFIG_NAME es el nombre de tu configuración de servidor de bucket.

Si el proceso es satisfactorio, el cuerpo de la respuesta contiene una instancia nueva de Operation.

Ingresa el siguiente comando de 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/global/operations/OPERATION_ID

Donde:

  • PROJECT_NUMBER es el número de proyecto de Cloud.
  • PROJECT_ID es el ID del proyecto de Cloud.
  • OPERATION_ID es el ID de la operación de creación de la configuración de Bitbucket Server.

Es posible que debas seguir ejecutando el comando de la API de GetOperation hasta que la respuesta contenga done: true, lo que indica que se completó la operación. Si se creó correctamente la configuración de Bitbucket Server, puedes verla en el campo response.value. De lo contrario, consulta el campo error para ver un informe de errores detallado.

¿Qué sigue?