Cloud Build 可讓您建立觸發條件,從 GitLab 代管的存放區建構。您可以執行建構作業,因應與 GitLab 存放區相關聯的事件,例如推送修訂版本或合併要求。
本頁說明如何為 GitLab 執行個體啟用建構觸發條件。詳情請參閱「Cloud Build 觸發條件」和「Cloud Build 存放區」。
事前準備
按照操作說明連結至 GitLab 主機。啟用 Cloud Build 和 Secret Manager API。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。
如要為 GitLab 存放區建立觸發條件,您必須在 Google Cloud 和存放區之間建立連線。如要透過 Google Cloud中的 GitLab 應用程式建立連線,請參閱「連結至 GitLab 存放區」。
建立 GitLab 觸發條件
本節說明如何建立觸發條件,並連結至 GitLab 安裝項目。
Google Cloud 控制台
如要使用 Google Cloud 控制台建立 GitLab 觸發條件,請按照下列步驟操作:
開啟「觸發條件」頁面:
在頁面頂端選取專案 Google Cloud ,然後按一下「開啟」。
按一下「建立觸發條件」。
輸入下列觸發條件設定:
名稱︰觸發條件的名稱。
「區域」:選取觸發條件的區域。
- 如果與觸發條件相關聯的建構設定檔指定了私人集區,Cloud Build 就會使用該私人集區執行建構作業。在這種情況下,您在觸發條件中指定的區域,必須與您建立私人集區的區域相符。
- 如果與觸發條件相關聯的建構設定檔未指定私人集區,Cloud Build 會使用預設集區,在與觸發條件相同的區域中執行建構。
說明 (選填):觸發條件的說明。
「Event」(事件):選取要叫用觸發條件的存放區事件。
推送至分支版本:設定觸發條件,在修訂特定分支版本時啟動建構。
推送新標記:設定觸發條件,在修訂版本包含特定標記時啟動建構。
提取要求:設定觸發條件,在修訂合併要求時啟動建構。
來源:設定 GitLab 存放區的相關資訊:
存放區服務:選取 Cloud Build。
存放區產生:選取「第 2 代」做為來源。
存放區:從可用存放區清單中選取存放區。
分支版本或標記:指定要比對分支版本或標記值的規則運算式。如要瞭解可接受的規則運算式語法,請參閱 RE2 語法。
留言控制項:如果選取「Pull request」(提取要求) 做為「Event」(事件),請選擇下列其中一個選項,控管觸發條件是否自動執行建構作業:
必要 (擁有者和協作者除外):當存放區擁有者或協作者建立或更新提取要求時,觸發程序會自動執行建構作業。如果動作是由外部貢獻者發起,只有在擁有者或協作者對提取要求加註
/gcbrun時,才會執行建構作業。必要:當任何貢獻者建立或更新提取要求時,只有在擁有者或協作者在提取要求中留言
/gcbrun後,才會執行建構作業。每當提取要求有變更時,系統就會執行建構作業。不需設定:任何貢獻者建立或更新提取要求時,觸發程序會自動執行建構作業。
設定:選取存放區中的建構設定檔,或在觸發條件中設定建構作業。
類型:選取要用於建構作業的設定類型。
- Cloud Build 設定檔 (yaml 或 json): 使用建構設定檔進行設定。
- Dockerfile:使用
Dockerfile進行設定。
位置:指定設定的位置。
存放區:如果設定檔位於存放區中,請提供建構設定檔或
Dockerfile目錄的位置,並為產生的映像檔命名。如果您的設定是Dockerfile,您可以選擇為建構作業提供逾時時間。提供Dockerfile和映像檔名稱之後,您會看見建構將執行的docker build指令預覽。內嵌:如果您選取「Cloud Build 設定檔 (yaml 或 json)」做為設定選項,可以內嵌指定建構設定。按一下「開啟編輯器」,在Google Cloud 控制台中使用 YAML 或 JSON 語法編寫建構設定檔。按一下「完成」即可儲存建構設定。
按一下「建立」,建立 GitLab Enterprise Edition 觸發條件。
gcloud CLI
如要使用 gcloud 指令建立 GitLab 觸發條件,請執行下列指令:
gcloud builds triggers create gitlab \
--name=TRIGGER_NAME \
--repository=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME \
--branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
--build-config=BUILD_CONFIG_FILE \
--region=REGION \
--service-account=SERVICE-ACCOUNT
其中:
- TRIGGER_NAME 是觸發條件的名稱。
- PROJECT_ID 是您的 Google Cloud 專案 ID。
- REGION 是觸發程序的區域。
- CONNECTION_NAME 是 GitLab 連線的名稱。
- REPO_NAME 是您的存放區名稱
- BRANCH_PATTERN 是您要在存放區中叫用建構作業的分支名稱。
- TAG_PATTERN 是存放區中的標記名稱,用於叫用建構作業。
- BUILD_CONFIG_FILE 是建構設定檔的路徑。
- SERVICE-ACCOUNT 是用於觸發條件和建構作業的服務帳戶。
API
如要使用 API 建立 GitLab 觸發條件,請使用下列 JSON 範本:
{
"filename": "cloudbuild.yaml",
"name": "curl-trigger",
"description": "curl trigger",
"repository_event_config": {
"repository": "REPO_NAME",
"repository_type": "GITLAB",
// Field filter must be only one of the following:
"pullRequest": "PULL_REQUEST_FILTER",
"push": "PUSH_FILTER"
}
}
其中:
- 「REPO_NAME」是您在 Cloud Build 中設定的存放區連線名稱。
- 「PULL_REQUEST_FILTER」是
PullRequestFilter的例項,定義了篩選器,可讓 Cloud Build 在 GitLab 中建立相符的提取要求時觸發建構作業。 - 「PUSH_FILTER」是
PushFilter的例項,定義了篩選器,可讓 Cloud Build 在 GitLab 中進行相符的推送時觸發建構作業。
在終端機中輸入下列 curl 指令:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json
其中:
- PROJECT_NUMBER 是您的 Google Cloud 專案編號。
- PROJECT_ID 是您的 Google Cloud 專案 ID。
資料共用
Cloud Build 傳送至 GitLab 的資料可協助您依名稱識別觸發條件,並在 GitLab 存放區中查看建構結果。
Cloud Build 與 GitLab 主機之間會共用下列資料:
- Google Cloud 專案 ID
- 觸發條件名稱
後續步驟
- 瞭解如何管理建構觸發條件。