從 GitHub 建構存放區

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

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

事前準備

按照畫面上的指示連結至 GitHub 主機
  • Enable the Cloud Build API.

    Enable the API

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

建立 GitHub 觸發條件

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

Google Cloud 控制台

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

  1. 在 Google Cloud 控制台中開啟「觸發條件」頁面。

    開啟「Triggers」(觸發條件) 頁面

  2. 選取 Google Cloud 專案並按一下「開啟」

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

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

    • 名稱:輸入觸發條件的名稱。

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

      • 如果與觸發條件相關聯的建構設定檔指定了私人集區,Cloud Build 就會使用該私人集區執行建構作業。在這種情況下,您在觸發條件中指定的區域必須與您建立私人集區的區域相符。
      • 如果與觸發條件相關聯的建構設定檔指定私人集區,Cloud Build 會使用預設集區,在與觸發條件相同的區域中執行建構。

    • 說明 (選填):輸入觸發條件的說明。

    • 「Event」(事件):選取要叫用觸發條件的存放區事件。

      • 推送至分支版本:設定觸發條件,在修訂特定分支版本時啟動建構。

      • 推送新標記:設定觸發條件,在修訂版本包含特定標記時啟動建構。

      • 提取要求:設定觸發條件,在提取要求修訂時啟動建構。

    • 來源:設定 GitHub 存放區的相關資訊:

      • 存放區服務:選取 Cloud Build。

      • 存放區產生:選取「Developer Connect」做為來源。

      • 存放區:從可用存放區清單中選取存放區。

      • 分支版本標記:指定要比對分支版本或標記值的規則運算式。如要瞭解可接受的規則運算式語法,請參閱 RE2 語法

      • 註解控制項:如果選取「Pull request」(提取要求) 做為「Event」(事件),請選擇下列其中一個選項,控管觸發條件是否自動執行建構作業:

        • 必要 (擁有者和協作者除外):存放區擁有者或協作者建立或更新提取要求時,觸發程序會自動執行建構作業。如果外部貢獻者啟動動作,只有在擁有者或協作者對提取要求加註 /gcbrun 時,系統才會執行建構作業。

        • 必要:當任何貢獻者建立或更新提取要求時,只有在擁有者或協作者在提取要求中留言 /gcbrun 後,系統才會執行建構作業。每當提取要求有變更時,系統就會執行建構作業。

        • 不需設定:任何貢獻者建立或更新提取要求時,觸發程序會自動執行建構作業。

    • 設定:選取遠端存放區中的建構設定檔,或建立內嵌建構設定檔,以用於建構作業。

      • 類型:選取要用於建構作業的設定類型。
        • 自動偵測:如果存放區中有 cloudbuild.yamlDockerfile,Cloud Build 會自動偵測設定類型。
        • Cloud Build 設定檔 (YAML 或 JSON): 使用建構設定檔進行設定。
        • Dockerfile:使用 Dockerfile 進行設定。
        • Buildpacks:使用建構包進行設定。
      • 位置:指定設定的位置。

        • 存放區:如果設定檔位於遠端存放區,請提供建構設定檔Dockerfile 目錄的位置,以及產生的映像檔名稱。如果您的設定是 Dockerfile,您可以選擇性地為建構作業提供逾時時間。提供 Dockerfile 和映像檔名稱之後,您會看見建構將執行的 docker build 指令預覽。
        • 內嵌:如果您選取「Cloud Build 設定檔 (yaml 或 json)」做為設定選項,可以內嵌指定建構設定。按一下「開啟編輯器」,在Google Cloud 控制台中使用 YAML 或 JSON 語法編寫建構設定檔。按一下「完成」即可儲存建構設定。
    • 替代變數 (選用):如果您選取 Cloud Build 設定檔做為建構設定選項,可以使用這個欄位定義觸發程序專用的替代變數。舉例來說,假設您要建立多個觸發條件,每個觸發條件都會將應用程式部署至特定環境。您可以在建構設定檔中指定要將應用程式部署至哪個環境,然後使用這個欄位定義替代變數,指定這個觸發程序應部署至哪個環境。如要瞭解如何在建構設定檔中指定替代值,請參閱「替換變數值」。

    • 建構作業記錄檔 (選用):勾選這個方塊,將建構作業記錄檔傳送至 GitHub。如要瞭解如何查看建構記錄,請參閱「查看建構記錄」。

    • 服務帳戶:選取要用於叫用觸發條件的服務帳戶。如果組織政策允許使用舊版 Cloud Build 服務帳戶,您可以將這個欄位留空,使用舊版服務帳戶。否則,您必須選取要使用的特定服務帳戶,即使是 Compute Engine 預設服務帳戶也一樣。

  5. 按一下「建立」即可儲存建構觸發條件。

如要使用 gcloud 指令建立 GitHub 觸發條件,請參閱建立建構觸發條件gcloud 指令。

gcloud CLI

如要使用 gcloud 指令建立 GitHub 觸發條件,請執行下列指令:

    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 是 GitHub 連線的名稱。
  • GIT_REPOSITORY_LINK 是 Git 存放區的連結。
  • BRANCH_PATTERN 是存放區中的分支名稱,用於叫用建構作業。
  • TAG_PATTERN 是存放區中的標記名稱,用於叫用建構作業。
  • BUILD_CONFIG_FILE 是建構設定檔的路徑。
  • SERVICE-ACCOUNT 是用於觸發條件和建構作業的服務帳戶。

API

如要使用 API 建立 GitHub 觸發條件,請使用下列 JSON 範本:

  {
      "filename": "cloudbuild.yaml",
      "name": "TRIGGER_NAME",
      "description": "TRIGGER_DESCRIPTION",
      "serviceAccount": "SERVICE_ACCOUNT",
      "github": {
          "owner": "OWNER",
          "name": "REPO_NAME",
          "push": {
              "branch": ".*"
          },
      
      },
      "include_build_logs": include-build-logs-value
  }

其中:

  • TRIGGER_NAME 是觸發條件的名稱。
  • TRIGGER_DESCRIPTION 是觸發條件的說明。
  • SERVICE_ACCOUNT 是用於觸發條件和建構作業的服務帳戶。
  • OWNER 是 GitHub 存放區的擁有者。
  • REPO_NAME 是 GitHub 存放區的名稱。
  • include-build-logs-value 是選用 include_build_logs 欄位的值。如果這個欄位的值為 INCLUDE_BUILD_LOGS_SPECIFIED,存放區就會顯示建構記錄。

在終端機中輸入下列 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。

建構及查看變更

如要使用 GitHub 觸發條件建構,您需要將變更推送並提交至已連結的來源存放區,或針對提取要求設定建構作業。查看變更內容後,Cloud Build 會建構您的程式碼。

如要在 GitHub 上查看建構變更,請前往存放區的「Checks」分頁。

conversation 分頁的螢幕擷圖

您會發現 Cloud Build 已經建構您的變更。您也會看見其他版本詳細資料,例如建構程式碼所花費的時間和版本 ID。

如要在 Cloud Build 中查看建構變更,請按一下「View more details on Google Cloud Build」。 Google Cloud 主控台隨即會開啟「版本詳細資料」頁面,您可在此查看狀態、記錄與建構步驟等版本資訊。

資料共用

Cloud Build 傳送至 GitHub 的資料可協助您依名稱識別觸發條件,並在 GitHub 上查看建構結果。

Cloud Build 和 GitHub 目前會共用下列資料:

  • Cloud 專案 ID
  • 觸發條件名稱
  • 建構作業記錄檔

如果您在 2020 年 8 月前建立觸發條件,專案可能未啟用資料共用功能。如要為專案中的所有 GitHub 觸發條件啟用資料共用功能,請按一下「Cloud Build 資料共用」分頁中的「啟用」

如果已為 GitHub 存放區啟用必要狀態檢查,啟用資料共用功能可能會暫時中斷狀態檢查。您可以調整狀態檢查設定,依下列方式尋找觸發條件名稱:

  • 在 GitHub 存放區中停用任何 Cloud Build 專用的必要檢查
  • 確保 Cloud Build 已啟用資料共用功能
  • 在 Cloud Build 中執行新的建構作業,將狀態發布至存放區
  • 重新啟用必要狀態檢查、選取觸發條件名稱

後續步驟