借助 Cloud Build,您可以在 GitHub Enterprise 实例上创建触发器。本页介绍了如何使用 GitHub Enterprise 触发器调用构建,以响应来自 GitHub Enterprise 实例的提交或拉取请求,并介绍了如果您的实例托管在专用网络中,如何从 GitHub Enterprise 构建代码库。
准备工作
-
Enable the Cloud Build and Service Directory APIs.
- 如果您尚未创建专用池,请按照 创建和管理专用池 创建专用池您需要专用池才能在专用网络中进行构建。
在私有网络中从 GitHub Enterprise 构建代码库
完成以下步骤以连接您的 GitHub Enterprise 实例 从专用网络迁移到 Cloud Build:
向 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 是包含您的服务目录的 Google Cloud 项目的 ID。
向 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。
完成以下步骤,设置 Service Directory 服务:
为您的服务配置命名空间:
gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
替换以下内容:
- NAMESPACE 是您的 Service Directory 命名空间的名称。
- LOCATION 是您在其中创建连接和关联代码库的区域。
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY 是包含您的服务目录的 Google Cloud 项目的 ID。
为您的命名空间配置一项服务:
gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
替换以下内容:
- SERVICE 是您的服务目录资源的名称。
- NAMESPACE 是您的 Service Directory 命名空间的名称。
- LOCATION 是您在其中创建连接和关联代码库的区域。
为您的服务配置端点:
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}
) 创建连接。创建 GitHub Enterprise 触发器以构建托管在您的 GitHub Enterprise 实例。
使用 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 负载均衡器,请参阅 设置具有混合连接的区域级内部代理网络负载平衡器。
后续步骤
- 了解如何创建和管理构建触发器。
- 了解如何在 Compute Engine 上执行蓝绿部署。