Cloud Build 可讓您在 GitHub Enterprise 執行個體上建立觸發條件。本頁說明如何使用 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。
將 VPC 網路資源存取權授予 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_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。
請完成下列步驟,設定服務目錄服務:
為服務設定命名空間:
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 是 Service Directory 資源的名稱。
- 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/global/networks/NETWORK
更改下列內容:
- ENDPOINT_NAME 是端點的名稱。
- NAMESPACE 是 Service Directory 命名空間的名稱。
- SERVICE 是 Service Directory 資源的名稱。
- LOCATION 是您建立連線和連結存放區的區域。
- INSTANCE_IP_ADDRESS 是網路中 GitHub Enterprise 執行個體的 IP 位址。例如,
123.45.67.89
。如需更多資訊,請參閱「使用服務目錄聯絡外部主機 Google Cloud」。 - PORT 是 HTTPS 的通訊埠名稱。
- PROJECT_ID_CONTAINING_NETWORK 是含有您虛擬私有雲網路的 Google Cloud 專案 ID。
- NETWORK 是您虛擬私人雲端網路的名稱。
您現在可以使用服務資源 (
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以外的主機
如果網路設定不允許您將服務目錄 IP 位址範圍 35.199.192.0/19
轉送至 Cloud VPN 或 Cloud Interconnect,您可以使用 Cloud Load Balancing 建立負載平衡器,將流量導向主機。
建立服務目錄端點時,請務必使用負載平衡器轉送規則的 IP 位址,而非主機的 IP 位址。建立端點時,您可以使用內部 HTTPS 負載平衡器或內部傳輸控制協定 (TCP) 負載平衡器。
建立 TCP 負載平衡器時,請考量以下事項:
- 您只需要混合式連線網路端點群組 (NEG) 就能連線至主機。
- TCP 負載平衡器不需要 SSL 憑證的未加密私密金鑰。
- Cloud VPN 設定必須搭配全域動態轉送功能使用 Cloud Router。如果 Cloud VPN 使用靜態路由,您可以改用使用 Cloud Service Mesh 的 Proxy。詳情請參閱「為混合式部署設定網路邊緣服務」。
如要進一步瞭解如何建立 HTTPS 負載平衡器,請參閱「設定內部應用程式負載平衡器,並使用混合式連線」一文。如要進一步瞭解如何建立 TCP 負載平衡器,請參閱「設定區域性內部 Proxy 網路負載平衡器,並使用混合式連線」一文。
後續步驟
- 瞭解如何建立及管理自動建構觸發條件。
- 瞭解如何在 Compute Engine 上執行藍綠部署作業。