Cómo 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.

Antes de comenzar

  • Enable the Cloud Build, Secret Manager, and Compute Engine APIs.

    Enable the APIs

  • Ten listo tu código fuente en un repositorio de Bitbucket Data Center.
  • Tener un Dockerfile o un archivo de configuración de Cloud Build en tu repositorio de código fuente de Bitbucket Data Center
  • Si no instalaste una instancia de Bitbucket Data Center, consulta Cómo instalar Bitbucket Data Center para obtener instrucciones.
  • Para usar los comandos de gcloud de esta página, instala Google Cloud CLI.

Cómo conectarse a un host de Bitbucket Data Center

Console

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

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

    Abrir 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 Connect host.

    Ingresa 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: Ingresa un nombre para tu conexión.

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

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

    5. Certificado de AC: Es tu certificado autofirmado. Tu certificado no debe tener un tamaño superior a 10 KB y debe estar en formato PEM (.pem, .cer o .crt). Si dejas esta sección en blanco, Google Cloud usará un certificado del conjunto predeterminado de certificados.

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

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

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

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

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

      2. Red privada: Selecciona esta opción si tu instancia se aloja en una red privada.

        1. Project: Selecciona el Google Cloud ID de tu proyecto.

        2. Red: Selecciona tu red en el menú desplegable. Si no creaste una red, consulta Crea y administra redes de VPC para obtener información sobre cómo crear una.

        3. Rango de IP: Ingresa el rango de IP interno que se puede asignar a las VMs dentro del rango asignado de una red en pares.

          Puedes especificar el rango con la notación de enrutamiento entre dominios 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 rango de IP se usan como máscara de subred (192.0.2.0), mientras que las posibles direcciones de host van de 192.0.2.0 a 192.0.2.255.

          El valor de la longitud del prefijo no debe exceder /29. Si no se especifica un valor para el rango, se asigna automáticamente un valor predeterminado de /24. Si no se especifica ningún valor para la longitud del prefijo, las direcciones IP se asignan automáticamente dentro de la red de VPC en pares. Si no se especifica un valor para la dirección IP, se le asigna automáticamente un rango dentro de la red de VPC en pares.

  5. Haz clic en Conectar host.

    Si tu instancia de Bitbucket Data Center se encuentra en una red de pares, la conexión de tu host puede tardar varios minutos en completarse.

    Se te redireccionará al panel Connect Repository.

    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 administrar tus secretos en la página Secret Manager.

gcloud

Para conectar tu host de Bitbucket Data Center a Cloud Build con comandos gcloud, debes ejecutar el comando gcloud alpha builds enterprise-config bitbucketserver create en la terminal. A diferencia de conectar tu host con la consola de Google Cloud, deberás 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_DATA_CENTER_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

Aquí:

  • BITBUCKET_DATA_CENTER_CONFIG_NAME es el nombre de la configuración del centro de datos de Bitbucket.
  • 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 para los secretos almacenados en Secret Manager es projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}. Puedes especificar latest como tu 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 te conectarás para las instancias de Bitbucket Data Center locales. Para obtener más información, consulta Cómo compilar repositorios desde Bitbucket Data Center en una red privada.

  • Opcional: PEERED_NETWORK_IP_RANGE es el rango de IP interno al que se pueden asignar las VMs dentro del rango asignado de una red con intercambio de tráfico.

  • SSL_CA_FILE es la ruta de acceso a un archivo local que contiene tu certificado SSL para usar en las solicitudes al centro de datos de Bitbucket. El certificado debe estar en formato PEM.

API

Para conectar tu host de Bitbucket Data Center a Cloud Build con la API, usa la siguiente plantilla JSON. A diferencia de conectar tu host con la consola de 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"
}

Aquí:

  • 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 debas otorgar el rol de descriptor de acceso a secretos 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 Otorga función 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 establece la vinculación para tus instancias de Bitbucket Data Center locales.

    Puedes especificar el rango con la notación de enrutamiento entre dominios 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 rango de IP se usan como máscara de subred (192.0.2.0), mientras que las posibles direcciones de host van de 192.0.2.0 a 192.0.2.225.

  • Opcional: PEERED_NETWORK_IP_RANGE es el rango de IP interno al que se pueden asignar las VMs dentro del rango asignado de una red con intercambio de tráfico.

  • Opcional: SSL_CERTIFICATE es el certificado SSL que se usa para tus instancias de Bitbucket Data Center locales.

Ingresa el siguiente comando curl en la 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=BITBUCKET_DATA_CENTER_CONFIG_NAME -d @config.json

Aquí:

  • PROJECT_ID es el Google Cloud ID de tu proyecto.
  • REGION es la región asociada con la configuración de tu centro de datos de Bitbucket.
  • BITBUCKET_DATA_CENTER_CONFIG_NAME es el nombre de la configuración de tu centro de datos de Bitbucket.

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

Ingresa el siguiente comando curl en la 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

Aquí:

  • PROJECT_NUMBER es el Google Cloud número de proyecto.
  • PROJECT_ID es el Google Cloud ID de tu proyecto.
  • REGION es la región asociada con la configuración de tu centro de datos de Bitbucket.
  • OPERATION_ID es el ID de la operación de creación de configuración de Bitbucket Data Center.

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

¿Qué sigue?