在专用网络中从 GitHub Enterprise 构建代码库

借助 Cloud Build,您可以在 GitHub Enterprise 实例上创建触发器。本页面介绍了如何使用 GitHub Enterprise 触发器调用构建 响应来自 GitHub Enterprise 实例的提交或拉取请求 并说明了如何从 Google Cloud 中 GitHub Enterprise(如果您的实例托管在专用网络中)。

准备工作

  • 启用 Cloud Build and Service Directory API。

    启用 API

  • 如果您尚未创建专用池,请按照 创建和管理专用池 创建专用池您需要一个专用池 构建在专用网络中

在专用网络中从 GitHub Enterprise 构建代码库

完成以下步骤以连接您的 GitHub Enterprise 实例 从专用网络迁移到 Cloud Build:

  1. 授予对 Cloud Build 服务代理的访问权限以使用 Service Directory:

    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 是您的 Google Cloud 项目 ID。
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY 是您的 包含您的 Service Directory 的 Google Cloud 项目。
  2. 授予对您的 VPC 网络资源的访问权限,其中 PROJECT_ID_CONTAINING_NETWORK_RESOURCE 是您的 包含您的网络资源的 Google Cloud 项目。

    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
      --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
      --role="roles/servicedirectory.pscAuthorizedService"
    
  3. 完成以下步骤,设置 Service Directory 服务:

    1. 为您的服务配置命名空间

       gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
      

      替换以下内容:

      • NAMESPACE 是您的 Service Directory 命名空间的名称。
      • LOCATION 是您在其中创建连接和关联代码库的区域
      • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY 是您的 包含您的 Service Directory 的 Google Cloud 项目。
    2. 为您的命名空间配置一项服务

       gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
      

      替换以下内容:

      • SERVICE 是您的 Service Directory 资源的名称。
      • NAMESPACE 是您的 Service Directory 命名空间的名称。
      • LOCATION 是您在其中创建连接和关联代码库的区域
    3. 为您的服务配置端点

       gcloud service-directory endpoints create ENDPOINT_NAME \
         --namespace=NAMESPACE \
         --service=SERVICE \
         --location=LOCATION \
         --address=INSTANCE_IP_ADDRESS \ 
         --port=PORT \
         --network=projects/PROJECT_ID_CONTAINING_NETWORK/locations/us-central1/ networks/NETWORK
      

      替换以下内容:

      • ENDPOINT_NAME 是端点的名称。
      • NAMESPACE 是您的 Service Directory 命名空间的名称。
      • SERVICE 是您的 Service Directory 资源的名称。
      • LOCATION 是您在其中创建连接和关联代码库的区域
      • INSTANCE_IP_ADDRESS 是您的 GitHub Enterprise 的 IP 地址 实例。例如 123.45.67.89。如需了解详情,请参阅使用 Service Directory 访问 Google Cloud 以外的主机
      • PORT 是 HTTPS 端口的名称。
      • PROJECT_ID_CONTAINING_NETWORK 是包含您的 VPC 网络的 Google Cloud 项目 ID。
      • NETWORK 为 VPC 网络的名称。

    现在,您可以通过以下步骤使用服务资源 (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) 创建连接。

  4. 连接 GitHub Enterprise 主机

  5. 连接 GitHub Enterprise 代码库

  6. 创建 GitHub Enterprise 触发器以构建托管在您的 GitHub Enterprise 实例。

使用 Service Directory 访问 Google Cloud 以外的主机

Service Directory 使用 IP 地址范围 35.199.192.0/19 以连接您的 GitHub Enterprise 主机。您必须将此范围列入 防火墙。此外,您的专用网络需要配置为 通过 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 VPN 使用静态路由 一个使用 Cloud Service Mesh 的代理。如需了解详情,请参阅 为混合部署设置网络边缘服务

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

后续步骤