En esta página, se explica cómo conectar un Centro de datos de Bitbucket host en Cloud Build.
Antes de comenzar
-
Enable the Cloud Build and Secret Manager 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.
Permisos de IAM obligatorios
- Para obtener los permisos que necesitas para conectar tu host de Bitbucket Data Center, pídele a tu administrador que te otorgue el rol de IAM de Administrador de conexión de Cloud Build (
roles/cloudbuild.connectionAdmin
) en la cuenta de usuario. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
- Si tu instancia de Bitbucket Data Center está alojada en una red privada, consulta Crea repositorios de Bitbucket Data Center en una red privada para obtener información sobre los roles de IAM adicionales que se requieren antes de la conexión del host.
Conéctate a un host de centro de datos de Bitbucket
Antes de crear una conexión de host para tu instancia de Bitbucket Data Center, debes crear tokens de acceso personal en Bitbucket Data Center. Para ello, completa los siguientes pasos:
Accede al centro de datos de Bitbucket. instancia.
Sigue las instrucciones para crear tokens de acceso HTTP para tu cuenta de usuario.
Crea un token de acceso con el permiso de administrador de repositorios para usarlo en la conexión y desconexión de repositorios.
Crea un token de acceso con el alcance de lectura del repositorio para asegurarte de que Los repositorios de Cloud Build pueden acceder al código fuente en los repositorios.
Console
Para conectar tu host de centro de datos de Bitbucket a Cloud Build, sigue estos pasos:
Abre la página Repositorios en la consola de Google Cloud.
Verás la página Repositories.
En la parte superior de la página, selecciona la pestaña 2nd gen.
En el selector de proyectos de la barra superior, selecciona tu proyecto de Google Cloud.
Haz clic en Create host connection para conectar un host nuevo a Cloud Build.
En el panel izquierdo, selecciona Bitbucket como proveedor de origen.
En la sección Configurar conexión, ingresa la siguiente información:
Región: Selecciona una región para tu conexión. Debes especificar un región. Tu conexión no puede existir a nivel global.
Nombre: Ingresa un nombre para tu conexión.
En la sección Detalles del host, selecciona o ingresa la siguiente información:
Host de Bitbucket: Selecciona Bitbucket Data Center como host.
URL del host: Ingresa la URL del host de Bitbucket Data Center.
En la sección Herramientas de redes, selecciona una de las siguientes opciones:
Internet pública: Selecciona esta opción si se puede acceder a tu instancia a través de Internet pública.
Red privada: Selecciona esta opción si tu instancia está alojada en un privada.
Certificado de CA: Es tu certificado autofirmado. Haz clic en Explorar. para abrir el certificado desde tu máquina local.
Tu certificado no debe superar los 10 KB de tamaño y debe tener Formato PEM (
.pem
,.cer
o.crt
). Si dejas este campo en blanco, Cloud Build usa un certificado del conjunto predeterminado de certificados.En la sección Servicio de directorio de servicios, selecciona la ubicación de tu servicio. Puedes aceptar el mensaje prepropagado el ID del proyecto o especifica uno diferente.
Selecciona el proyecto de tu servicio. Puedes aceptar el proyecto prepropagado, elige En otro proyecto para explorar o elegir Ingresar manualmente.
Si eliges ingresa la siguiente información:
Proyecto: Ingresa o selecciona tu cuenta de Google Cloud el ID del proyecto en el menú desplegable.
Region (Región): Este campo preselecciona la región de tu conexión. La región especificada para tu servicio debe coincidir con la región asociada con tu 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 la sección Tokens de acceso HTTP, ingresa la siguiente información:
Token de acceso de administrador: Ingresa el token con el acceso de permiso de administrador del repositorio. Este token se utiliza para conectar y desconectar de Cloud Storage.
Token de acceso de lectura: Ingresa el token con el acceso al permiso de lectura del repositorio. Los activadores de Cloud Build usan este token para acceder el código en los repositorios.
Haz clic en Conectar.
Después de hacer clic en el botón Connect, tus tokens de acceso personal se almacenarán de forma segura en Secret Manager. Después de conectarte al host de Bitbucket Data Center, Cloud Build crea un secreto de webhook en tu nombre. Puedes ver y administrar tus secretos en la página Secret Manager.
gcloud
Crea un secreto de webhook en Secret Manager con la ejecución del siguiente comando, en el que WEBHOOK_SECRET es el nombre que quieres asignarle a tu Secret de webhook:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET --data-file=-
Si almacenas tus Secrets en un proyecto de Google Cloud diferente al que planees usar para crear una conexión de host, ejecuta el siguiente comando: para otorgar a tu proyecto acceso a Cloud Build agente de servicio:
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ \ --role="roles/secretmanager.admin"
Aquí:
- PROJECT_ID es tu ID del proyecto de Cloud.
Ahora puedes conectar tu host de Bitbucket Data Center a Cloud Build.
Ejecuta el siguiente comando para crear una conexión de Bitbucket Data Center:
gcloud builds connections create bitbucket-data-center CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/ADMIN_TOKEN/versions/SECRET_VERSION \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSION ``` Where:
- CONNECTION_NAME es el nombre de tu conexión.
- HOST_URI es el URI de tu instancia de Bitbucket Data Center.
- PROJECT_ID es el ID de tu proyecto de Google Cloud.
- REGION es la región. para tu conexión.
- ADMIN_TOKEN es el nombre de tu token con permiso del administrador del repositorio.
- READ_TOKEN es el nombre de tu token con permiso de lectura del repositorio.
- SECRET_VERSION es la versión de tu secreto.
- WEBHOOK_SECRET es el secreto de tu webhook.
Terraform
Puedes conectar tu host de Bitbucket Data Center a Cloud Build con Terraform.
En el siguiente ejemplo, el fragmento de código hace lo siguiente:
- Configura el proveedor de Google para Terraform.
- Crea un secreto de Secret Manager para almacenar los tokens de Bitbucket.
- Otorga los permisos necesarios a Cloud Build para que el agente de servicio acceda a los Secrets.
Crea una conexión de Bitbucket Data Center.
// Configure the Terraform Google provider terraform { required_providers { google = {} } } provider "google" { project = "PROJECT_ID" region = "REGION" } // Create secrets and grant permissions to the Cloud Build service agent resource "google_secret_manager_secret" "admin-token-secret" { project = "PROJECT_ID" secret_id = "ADMIN_TOKEN_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "admin-token-secret-version" { secret = google_secret_manager_secret.admin-token-secret.id secret_data = "ADMIN_TOKEN_VALUE" } resource "google_secret_manager_secret" "read-token-secret" { project = "PROJECT_ID" secret_id = "READ_TOKEN_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "read-token-secret-version" { secret = google_secret_manager_secret.read-token-secret.id secret_data = "READ_TOKEN_VALUE" } resource "google_secret_manager_secret" "webhook-secret-secret" { project = "PROJECT_ID" secret_id = "WEBHOOK_SECRET_NAME" replication { auto {} } } resource "google_secret_manager_secret_version" "webhook-secret-secret-version" { secret = google_secret_manager_secret.webhook-secret-secret.id secret_data = "WEBHOOK_SECRET_VALUE" } data "google_iam_policy" "p4sa-secretAccessor" { binding { role = "roles/secretmanager.secretAccessor" members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"] } } resource "google_secret_manager_secret_iam_policy" "policy-pak" { project = google_secret_manager_secret.admin-token-secret.project secret_id = google_secret_manager_secret.admin-token-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-rpak" { project = google_secret_manager_secret.read-token-secret.project secret_id = google_secret_manager_secret.read-token-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-whs" { project = google_secret_manager_secret.webhook-secret-secret.project secret_id = google_secret_manager_secret.webhook-secret-secret.secret_id policy_data = data.google_iam_policy.p4sa-secretAccessor.policy_data } // Create the connection resource resource "google_cloudbuildv2_connection" "my-connection" { project = "PROJECT_ID" location = "REGION" name = "CONNECTION_NAME" bitbucket_data_center_config { host_uri = "BITBUCKET_URI" authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.admin-token-secret-version.id } read_authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.read-token-secret-version.id } webhook_secret_secret_version = google_secret_manager_secret_version.webhook-secret-secret-version.id } depends_on = [ google_secret_manager_secret_iam_policy.policy-pak, google_secret_manager_secret_iam_policy.policy-rpak, google_secret_manager_secret_iam_policy.policy-whs ] }
Aquí:
- PROJECT_ID es el ID del proyecto de Google Cloud.
- PROJECT_NUMBER es tu proyecto de Google Cloud. de la fila.
- ADMIN_TOKEN_NAME es el nombre de tu token con el permiso
repository:admin
. - ADMIN_TOKEN_VALUE es el valor de tu ADMIN_TOKEN_NAME
- READ_TOKEN_NAME es el nombre de tu token con
repository:read
permiso. - READ_TOKEN_VALUE es el valor de tu READ_TOKEN_NAME
- WEBHOOK_SECRET_NAME es el nombre del secreto de tu webhook.
- WEBHOOK_SECRET_VALUE es el valor de tu WEBHOOK_SECRET_NAME.
- REGION es la región de tu conexión.
- CONNECTION_NAME es el nombre de tu conexión.
- BITBUCKET_URI es el URI de tus datos de Bitbucket. Center.
¿Qué sigue?
- Obtén más información para conectar un repositorio de Bitbucket Data Center.
- Obtén información para realizar implementaciones azul-verde en Compute Engine.