连接到 Bitbucket 数据中心主机

本页介绍了如何将 Bitbucket 数据中心 托管到 Cloud Build

准备工作

  • 启用 Cloud Build, Secret Manager, and Compute Engine API。

    启用 API

  • 在 Bitbucket Data Center 代码库中准备好源代码。
  • 具有 DockerfileCloud Build 配置文件,位于 Bitbucket Data Center 源代码库。
  • 如果您尚未安装 Bitbucket 数据中心实例,请参阅安装 Bitbucket 数据中心
  • 如需使用此页面上的 gcloud 命令,请安装 Google Cloud CLI

连接到 Bitbucket 数据中心主机

控制台

将 Bitbucket 数据中心主机连接到 Cloud Build 使用 Google Cloud 控制台

  1. 在 Google Cloud 控制台中打开代码库页面:

    打开“代码库”页面

  2. 在页面顶部,选择第 1 代标签页。

  3. 点击连接主机

  4. 从下拉菜单中选择 Bitbucket Data Center

    您将看到连接主机面板。

    输入以下信息,将 Bitbucket 数据中心实例连接到 Cloud Build:

    1. 区域:选择您的连接所在的区域。

    2. 名称:输入连接的名称。

    3. 主机网址:您的 Bitbucket 数据中心实例的主机网址。例如 https://bbs.example-test.com:7990

    4. Google Cloud API 密钥:输入用于验证您 凭据。

    5. CA 证书:您的自签名证书。您的证书不得 大小超过 10 KB,且应采用 PEM 格式(.pem.cer.crt)。如果您将此部分留空,Google Cloud 会使用一组默认证书中的证书。

    6. 用户名:您的 Bitbucket 数据中心账号用户名。此账号应拥有对您要与 Cloud Build 连接的代码库的管理员访问权限。

    7. Read access token:输入您的 Bitbucket Data Center 账号个人 具有读取权限的访问令牌。

    8. Admin access token:输入您的 Bitbucket Data Center 账号 具有项目管理员权限的个人访问令牌, 代码库

    9. 网络类型下,选择以下选项之一:

      1. 公共互联网:如果您的实例位于 可通过公共互联网访问

      2. 专用网络:如果您的实例是托管的,请选择此选项 连接网络

        1. 项目:选择您的 Google Cloud 项目 ID。

        2. 网络:从下拉菜单中选择您的网络。如果您 尚未创建网络,请参阅创建和管理 VPC 网络,了解如何创建网络。

        3. IP 范围:输入可以分配给虚拟机的内部 IP 范围 在对等互连网络的分配范围内。

          您可以使用无类别域间路由 (CIDR) 路由表示法以 STARTING_IP/SUBNET_PREFIX_SIZE 格式指定范围。例如,192.0.2.0/24 的前缀长度为 24。IP 范围的前 24 位用作子网掩码 (192.0.2.0),而可能的主机地址范围为 192.0.2.0192.0.2.255

          前缀长度的值不得超过 /29。如果拒绝 值,系统会自动分配默认值 /24。如果没有为前缀长度指定值,则系统会在对等互连的 VPC 网络中自动分配 IP 地址。如果未指定 IP 地址值 系统会自动为该 IP 地址分配一个范围 (位于对等互连的 VPC 网络中)。

  5. 点击连接主机

    如果您的 Bitbucket 数据中心实例位于对等网络上,则连接主机可能需要几分钟才能完成。

    系统会将您重定向到连接代码库面板。

    创建主机连接后,您的个人访问令牌和网络钩子 Secret 将安全地存储在 Secret Manager 中。您可以在 Secret Manager 页面上查看和管理 Secret。

gcloud

如需使用 gcloud 命令将 Bitbucket 数据中心主机连接到 Cloud Build,您必须在终端中运行 gcloud alpha builds enterprise-config bitbucketserver create 命令。不同于使用 您需要手动存储您的 在运行以下命令之前,请先访问 Secret Manager 中的访问令牌和网络钩子密钥:

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

其中:

  • BITBUCKET_DATA_CENTER_CONFIG_NAME 是 Bitbucket 数据中心配置的名称。
  • USERNAME 是 Bitbucket 数据中心用户名。
  • HOST_URI 是 Bitbucket 数据中心实例的主机 URI。
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION 是应用的资源名称 存储在 Secret Manager 中的管理员访问令牌。通过 Secret Manager 中存储的 Secret 的预期格式 为 projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}。 您可以将 latest 指定为版本,以使用最新版本的 Secret。这适用于存储在 Secret Manager 中的每个资源。
  • READ_ACCESS_TOKEN_SECRET_VERSION 是存储在 Secret Manager 中的读取访问令牌的资源名称。
  • WEBHOOK_SECRET_SECRET_VERSION 是存储在 Secret Manager 中的网络钩子 Secret 的资源名称。
  • API_KEY 是 Google Cloud API 密钥。
  • 可选:PEERED_NETWORK 是要连接到的 VPC 网络,用于本地的 Bitbucket Data Center 实例。如需了解详情,请参阅在专用网络中从 Bitbucket Data Center 构建代码库

  • 可选:PEERED_NETWORK_IP_RANGE 是内部 IP 在对等互连网络的分配范围内可以分配虚拟机的范围。

  • SSL_CA_FILE 是包含用于向 Bitbucket 数据中心发出请求的 SSL 证书的本地文件的路径。证书应采用 PEM 格式。

API

如需使用 API 将 Bitbucket 数据中心主机连接到 Cloud Build,请使用以下 JSON 模板。与连接您的 使用 Google Cloud 控制台托管,则需要手动存储您的 在调用 API 之前,请先访问 Secret Manager 中的访问令牌和网络钩子密钥:

{
    "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"
}

其中:

  • HOST_URI 是 Bitbucket 数据中心实例的主机 URI。
  • USERNAME 是 Bitbucket 数据中心用户名。
  • API_KEY 是 Google Cloud API 密钥。
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION 是存储在 Secret Manager 中的管理员访问令牌的资源名称。您 可能需要将 Secret Manager 角色授予您的 Cloud Build 服务账号 service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com。接收者 如需了解详情,请参阅将 Secret Manager 角色授予您的 服务账号

  • READ_ACCESS_TOKEN_SECRET_VERSION 是资源名称 存储在 Secret Manager 中的读取访问令牌的令牌。

  • WEBHOOK_SECRET_SECRET_VERSION 是 存储在 Secret Manager 中的 webhook Secret。

  • 可选:PEERED_NETWORK 是 VPC 您的本地 Bitbucket Data Center 实例。

    您可以使用无类别域间路由 (CIDR) 指定范围 采用 STARTING_IP/SUBNET_PREFIX_SIZE 格式的路由表示法。例如: 192.0.2.0/24 的前缀长度为 24。IP 范围的前 24 位 用作子网掩码 (192.0.2.0),而可能的主机地址 范围:192.0.2.0 - 192.0.2.225

  • 可选:PEERED_NETWORK_IP_RANGE 是内部 IP 在对等互连网络的分配范围内可以分配虚拟机的范围。

  • 可选:SSL_CERTIFICATE 是用于本地 Bitbucket Data Center 实例的 SSL 证书。

在终端中输入以下 curl 命令:

  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

其中:

  • PROJECT_ID 是您的 Google Cloud 项目 ID
  • REGION 是与您的 Bitbucket Data Center 配置关联的区域
  • BITBUCKET_DATA_CENTER_CONFIG_NAME 是 Bitbucket 数据中心配置的名称。

如果成功,响应正文将包含一个新创建的 Operation 实例。

在终端中输入以下 curl 命令:

  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

其中:

  • PROJECT_NUMBER 是您的 Google Cloud 项目编号。
  • PROJECT_ID 是您的 Google Cloud 项目 ID。
  • REGION 是与您的 Bitbucket Data Center 配置关联的区域
  • OPERATION_ID 是您的 Bitbucket 数据中心配置创建操作的 ID。

您可能需要继续运行 GetOperation API 命令,直到响应包含 done: true(表示操作已完成)。如果 Bitbucket 数据中心配置已成功创建,您可以在 response.value 字段中看到该配置。否则,请查看 error 字段以获取详细的错误报告。

后续步骤