在专用网络中从 Bitbucket 数据中心构建代码库

借助 Cloud Build,您可以创建触发器以从托管在 Bitbucket 数据中心的代码库构建,从而执行构建以响应各种事件,例如与 Bitbucket 数据中心代码库关联的提交推送或拉取请求。

本页面介绍了如何在 Bitbucket 数据中心实例托管在专用网络中时,在该实例上启用触发器功能。

准备工作

  • 启用 Cloud Build 和 Secret Manager API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您 创建了项目,则可能已通过 所有者角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色

    启用 API

在专用网络中从 Bitbucket 数据中心构建代码库

如果您的 Bitbucket 数据中心实例只能在 VPC 网络中访问,您需要设置 VPC 网络 Service Directory 服务并使用专用池进行构建。包含 VPC 网络的项目可以与包含 Service Directory 服务的项目不同。 请按照以下步骤设置 Service Directory 并创建 Bitbucket 数据中心触发器:

  1. 启用 Service Directory API

  2. 向您打算在其中创建 Service Directory 服务的 Google Cloud 项目授予 Project IAM Admin 角色。如需了解如何授予 IAM 角色,请参阅 配置对 Cloud Build 资源的访问权限

  3. 按照以下步骤设置 Service Directory 服务:

    1. 配置命名空间 为您的 Google Cloud 项目。

      您在命名空间中指定的区域必须 与您在 Cloud Build 主机连接中指定的区域一致。

    2. 配置服务 在命名空间中。

    3. 配置端点 为注册的服务。

      配置端点时,您必须 使用内部 IP 地址并指定 HTTPS 端口号,以便 Cloud Build 可以访问您的服务。

    如需详细了解专用网络访问配置,请参阅 配置专用网络访问。 Service Directory 还与负载平衡器和 Google Kubernetes Engine (GKE) 等服务集成。 如需了解详情,请参阅 Service Directory 和负载均衡概览Service Directory for GKE 概览

  4. 授予 Service Directory 对 Cloud Build 服务代理的访问权限:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding  PROJECT_ID_CONTAINING_SERVICE_DIRECTORY \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.viewer"
    

    替换以下内容:

    • PROJECT_ID 是您的 Cloud Build 项目 ID。
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY 是包含 Service Directory 的 Google Cloud 项目的 ID。
  5. 授予 Cloud Build 服务代理对 VPC 网络资源的访问权限:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.pscAuthorizedService"
    

    替换以下内容:

    • PROJECT_ID 是您的 Cloud Build 项目 ID。
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE 是包含网络资源的 Google Cloud 项目 ID。
  6. 使用专用池运行 构建。如果您尚未创建专用池,请参阅 创建新的专用池

  7. 按照说明创建 Bitbucket 数据中心触发器以构建托管在 Bitbucket 数据中心实例上的代码库。

    如果您在将 Bitbucket 数据中心主机连接到 Cloud Build 时包含自签名证书或专用证书,则 必须将主机 URI 设置为证书的正文备用名称 (SAN)。

现在,您的 Bitbucket 数据中心触发器将根据您的配置自动在 Bitbucket 数据中心实例上调用构建。

使用 Service Directory 访问外部主机 Google Cloud

Service Directory 使用 IP 地址范围 35.199.192.0/19 连接外部主机 Google Cloud。您必须将此范围添加到防火墙中的许可清单。此外,您还需要将专用网络配置为通过 Cloud VPN 或 Cloud Interconnect 连接路由此范围。

如果您的连接使用 Cloud Router,您可以将连接配置为 传达 范围到您的专用网络。

如需了解详情,请参阅配置专用网络访问

使用 Cloud Load Balancing 访问外部主机 Google Cloud

如果您的网络配置不允许您将 Service Directory IP 地址范围 35.199.192.0/19 路由到 Cloud VPN 或 Cloud Interconnect,您可以使用 Cloud Load Balancing 创建负载均衡器,将流量定向到您的主机。

创建 Service Directory 端点时,请务必使用负载均衡器的转发规则的 IP 地址,而不是主机的 IP 地址。创建端点时,您可以使用 内部 HTTPS 负载均衡器内部传输控制协议 (TCP) 负载均衡器

创建 TCP 负载均衡器时,请考虑以下事项:

  • 只需混合连接网络端点组 (NEG) 即可访问您的主机。
  • TCP 负载均衡器不需要 SSL 证书的未加密私钥。
  • 您的 Cloud VPN 设置需要使用 Cloud Router 和全局动态路由。如果您的 Cloud VPN 使用静态路由,则可以使用使用 Cloud Service Mesh 的代理。如需了解详情,请参阅为混合部署设置网络 边缘服务 。

如需详细了解如何创建 HTTPS 负载均衡器,请参阅 设置具有混合连接的内部应用负载均衡器。 如需详细了解如何创建 TCP 负载均衡器,请参阅 设置具有混合连接的区域级内部代理网络负载均衡器

数据共享

从 Cloud Build 发送到 Bitbucket 数据中心的数据有助于您按名称识别触发器,并在 Bitbucket 数据中心代码库中查看构建结果。

Cloud Build 和 Bitbucket 数据中心之间共享以下数据:

  • Google Cloud 项目 ID
  • 触发器名称

后续步骤