Cloud Build 可讓您建立觸發條件,從 GitLab Enterprise Edition 託管的存放區建構內容,藉此回應與 GitLab Enterprise Edition 存放區相關聯的事件 (例如推送修訂版本或合併要求),並執行建構作業。
本頁說明如何為託管在私人網路的 GitLab Enterprise Edition 執行個體啟用觸發功能。
事前準備
啟用 Cloud Build、Secret Manager、Compute Engine 和 Service Networking API。
啟用 API 時所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
從私人網路中的 GitLab Enterprise Edition 建構存放區
如果 GitLab Enterprise Edition 執行個體只能在虛擬私有雲網路中存取,您需要設定 Service Directory 服務,並使用私人集區建構。含有虛擬私有雲網路的專案,可以與含有 Service Directory 服務的專案不同。請按照下列說明操作,確保執行個體可連線,再建立觸發條件:
請確認您具備專案 IAM 管理員角色,並已授予Google Cloud 您要建立 Service Directory 服務的專案。如要瞭解如何授予 IAM 角色,請參閱設定 Cloud Build 資源的存取權。
如要設定服務目錄服務,請完成下列步驟:
-
您在命名空間中指定的區域必須與 Cloud Build 主機連線中指定的區域相符。
在命名空間中設定服務。
為已註冊的服務設定端點。
設定端點時,必須使用內部 IP 位址並指定 HTTPS 通訊埠編號,Cloud Build 才能連上您的服務。
如要進一步瞭解如何設定私人網路存取權,請參閱「設定私人網路存取權」。Service Directory 也與負載平衡器和 Google Kubernetes Engine (GKE) 等服務整合。詳情請參閱「Service Directory 和負載平衡總覽」或「Service Directory for GKE 總覽」。
-
將 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。
將虛擬私有雲網路資源存取權授予 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,該專案包含您的網路資源。
按照操作說明建立 GitLab Enterprise Edition 觸發程序,以便建構託管於 GitLab Enterprise Edition 執行個體的存放區。
將 GitLab Enterprise Edition 主機連線至 Cloud Build 時,如果加入自簽或私有憑證,必須將主機 URI 設為憑證的主體別名 (SAN)。
現在,GitLab Enterprise Edition 觸發條件會根據您的設定,自動在 GitLab Enterprise Edition 執行個體上叫用建構作業。
使用 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 負載平衡器,請參閱「使用混合式連線設定區域性內部 Proxy 網路負載平衡器」。
資料共用
Cloud Build 傳送至 GitLab Enterprise Edition 的資料可協助您依名稱識別觸發條件,並在 GitLab Enterprise Edition 存放區中查看建構結果。
Cloud Build 與 GitLab Enterprise Edition 會共用下列資料:
- Google Cloud 專案 ID
- 觸發條件名稱
後續步驟
- 瞭解如何管理自動建構觸發條件。
- 瞭解如何在 Compute Engine 上執行藍綠部署。