Cloud Build 可讓您建立觸發條件,從 GitLab 代管的存放區建構。您可以因應與 GitLab 存放區相關聯的事件 (例如推送修訂版本或合併要求),執行建構作業。
本頁說明如何為 GitLab 執行個體啟用建構觸發條件。詳情請參閱「Cloud Build 觸發條件」和「Cloud Build 存放區」。
事前準備
按照操作說明連線至 GitLab 主機。-
Enable the Cloud Build and Secret Manager APIs.
如要為 GitLab 存放區建立觸發條件,您必須在 Google Cloud 和存放區之間建立連線。如要透過 Google Cloud中的 GitLab 應用程式建立連線,請參閱「連結至 GitLab 存放區」。
建立 GitLab 觸發條件
本節說明如何建立觸發條件,並連結至 GitLab 安裝項目。
Google Cloud 控制台
如要使用 Google Cloud 控制台建立 GitLab 觸發條件,請按照下列步驟操作:
開啟「觸發條件」頁面:
在頁面頂端選取專案 Google Cloud ,然後按一下「開啟」。
按一下「建立觸發條件」。
輸入下列觸發條件設定:
名稱︰觸發條件的名稱。
「區域」:選取觸發條件的區域。
- 如果與觸發條件相關聯的建構設定檔指定了私人集區,Cloud Build 就會使用該私人集區執行建構作業。在這種情況下,您在觸發條件中指定的區域必須與您建立私人集區的區域相符。
- 如果與觸發條件相關聯的建構設定檔未指定私人集區,Cloud Build 會使用預設集區,在與觸發條件相同的區域中執行建構。
說明 (選填):觸發條件的說明。
「Event」(事件):選取要叫用觸發條件的存放區事件。
推送至分支版本:設定觸發條件,在修訂特定分支版本時啟動建構。
推送新標記:設定觸發條件,在修訂版本包含特定標記時啟動建構。
提取要求:設定觸發條件,在修訂合併要求時啟動建構。
來源:設定 GitLab 存放區的相關資訊:
存放區服務:選取 Cloud Build。
存放區產生:選取「Developer Connect」做為來源。
存放區:從可用存放區清單中選取存放區。
分支版本或標記:指定要比對分支版本或標記值的規則運算式。如要瞭解可接受的規則運算式語法,請參閱 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 alpha builds triggers create developer connect
--name=TRIGGER_NAME \
--git-repository-link=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/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 連線名稱。
- GIT_REPOSITORY_LINK 是 Git 存放區的連結。
- BRANCH_PATTERN 是存放區中的分支名稱,用於叫用建構作業。
- TAG_PATTERN 是存放區中的標記名稱,用於叫用建構作業。
- BUILD_CONFIG_FILE 是建構設定檔的路徑。
- SERVICE-ACCOUNT 是用於觸發條件和建構作業的服務帳戶。
API
如要使用 API 建立 GitLab 觸發條件,請使用下列 JSON 範本:
{
"filename": "cloudbuild.yaml",
"name": "curl-trigger",
"description": "curl trigger",
"developer_connect_config" {
"git_repository_link": "PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME",
"git_repository_link_type": "GITLAB",
// Field filter must be only one of the following:
"pullRequest": "PULL_REQUEST_FILTER",
"push": "PUSH_FILTER"
}
}
其中:
- PROJECT_ID 是您的 Google Cloud 專案 ID。
- REGION 是觸發程序的區域。
- CONNECTION_NAME 是 GitLab 連線名稱。
- GIT_REPOSITORY_LINK 是 Git 存放區的連結。
- 「REPO_NAME」是存放區的名稱。
- 「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
- 觸發條件名稱
後續步驟
- 瞭解如何管理建構觸發條件。