您可以使用 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 就會使用預設集區,在與觸發事件相同的區域中執行建構作業。
說明 (選用):觸發條件的說明。
事件:選取要叫用觸發條件的存放區事件。
推送至分支版本:設定觸發條件,在修訂特定分支版本時啟動建構。
推送新代碼標記:設定觸發條件,在包含特定代碼標記的修訂時啟動建構。
提取要求:設定觸發條件,在合併要求的修訂時啟動建構。
來源:設定 GitLab 存放區的相關資訊:
存放區服務:選取 Cloud Build。
存放區產生:選取「Developer Connect」做為來源。
存放區:從可用存放區清單中選取存放區。
分支版本或標記:指定要比對的分支版本或標記值的規則運算式。如要瞭解可接受的規則運算式語法,請參閱 RE2 語法。
註解控制項:如果您選取「Pull Request」做為事件,請選擇下列其中一個選項,控制觸發條件是否自動執行建構作業:
必要 (擁有者和協作者除外):當存放區擁有者或協作者建立或更新拉取要求時,觸發事件會自動執行建構作業。如果是外部貢獻者啟動動作,則只有在擁有者或協作者在提取要求上加註
/gcbrun
後,系統才會執行建構作業。必要:當任何貢獻者建立或更新提取要求時,只有在擁有者或協作者在提取要求上留言
/gcbrun
後,才會執行建構作業。每次變更提取要求時,系統都會執行建構作業。非必要:當任何貢獻者建立或更新提取要求時,系統會自動觸發建構作業。
設定:選取存放區中的建構設定檔,或在觸發條件中設定建構作業。
類型:選取要用於建構作業的設定類型。
- Cloud Build 設定檔 (yaml 或 json):使用建構設定檔來設定。
- Dockerfile:使用
Dockerfile
進行設定。
Location:指定設定檔的位置。
存放區:如果設定檔位於存放區,請提供建構設定檔或
Dockerfile
目錄的位置,以及產生映像檔的名稱。如果您的設定為Dockerfile
,您可以選擇為建構作業提供逾時時間。提供Dockerfile
和映像檔名稱之後,您會看見建構作業將執行的docker build
指令預覽。內嵌:如果您選取「Cloud Build 設定檔 (yaml 或 json)」做為設定選項,則可內嵌指定建構設定檔。按一下「Open Editor」,即可使用 YAML 或 JSON 語法在Google Cloud 主控台中編寫建構設定檔。按一下「完成」即可儲存建構設定。
按一下「建立」,即可建立 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
- 觸發條件名稱
後續步驟
- 瞭解如何管理自動建構觸發條件。