從 GitLab 建構存放區

Cloud Build 可讓您建立觸發條件,從 GitLab 代管的存放區建構。您可以執行建構作業,因應與 GitLab 存放區相關聯的事件,例如提交推送或合併要求。

本頁說明如何為 GitLab 執行個體啟用建構觸發條件。詳情請參閱「Cloud Build 觸發條件」和「Cloud Build 存放區」。

事前準備

按照操作說明連線至 GitLab 主機
  • 啟用 Cloud Build 和 Secret Manager API。

    啟用 API 時所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

    啟用 API

如要為 GitLab 存放區建立觸發條件,您必須在 Google Cloud 和存放區之間建立連線。如要透過 Google Cloud中的 GitLab 應用程式建立連線,請參閱「連結至 GitLab 存放區」。

建立 GitLab 觸發條件

本節說明如何建立觸發條件,並連結至 GitLab 安裝項目。

Google Cloud 控制台

如要使用 Google Cloud 控制台建立 GitLab 觸發條件,請按照下列步驟操作:

  1. 開啟「觸發條件」頁面:

    開啟「觸發條件」頁面

  2. 在頁面頂端選取專案 Google Cloud ,然後按一下「開啟」

  3. 按一下「建立觸發條件」

  4. 輸入下列觸發條件設定:

    • 名稱︰觸發條件的名稱。

    • 「區域」:選取觸發條件的區域

      • 如果與觸發條件相關聯的建構設定檔指定私人集區,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 語法編寫建構設定檔。按一下「完成」即可儲存建構設定。

  5. 按一下「建立」,建立 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
  • 觸發條件名稱

後續步驟