使用 Cloud Build 將建構作業自動化

本主題說明如何使用 Cloud Build 與 Cloud Source Repositories 自動化版本。

您可以設定 Cloud Build 在使用者推送變更到儲存於 Cloud Source Repositories 的檔案時自動建構新映像檔。啟動自動版本的事件稱為版本觸發條件。這些觸發條件可確保您的容器映像檔保持在最新狀態。您也可以使用這些觸發條件建構與測試功能分支。

建構觸發條件可根據 Dockerfile 或建構設定檔執行建構作業。

使用 Dockerfile

如果您的建構設定要使用 Dockerfile,您需要指定 Dockerfile 目錄,並為產生的映像檔提供名稱。如要進一步瞭解如何建立 Dockerfile,請參閱 Docker 說明文件

提供 Dockerfile 與映像檔名稱之後,您會看見建構將執行的 docker build 指令預覽,以及觸發條件設定的摘要。

使用版本設定檔

如果您的建構設定要使用建構設定檔,您需要提供建構設定檔的位置。

設定位置後,您會看到觸發條件的摘要。

事前準備

其他資訊

  • 版本觸發條件使用存放區的「淺複製」。若使用淺複製,則只有觸發自動建構的單次修訂版本會在工作區中查看。如需詳細資訊,以及瞭解如何包含更多存放區歷史記錄,請參閱「取消淺複製」。

  • 如果您使用另一個代管 Git 供應商 (例如 GitHub 或 Bitbucket),但仍需要將存放區鏡像到 Cloud Source Repositories,則針對您正在作業的 Google Cloud專案,您必須擁有 cloudbuilds.builds.create 權限。此權限通常透過 cloudbuild.builds.editor 角色授予。

    初次使用外部存放區設定版本觸發條件時,您需要設定該存放區的授權。詳情請參閱「將存放區新增為遠端存放區」。

    設定外部存放區之後,Cloud Source Repositories 會建立存放區的鏡像。

  • 如要瞭解 Cloud Build 的配額與限制,請參閱 Cloud Build 說明文件中的「配額與限制」。

建立版本觸發條件

主控台

  1. 在 Google Cloud 控制台中開啟「Triggers」頁面。

    開啟「觸發條件」頁面

  2. 在頁面頂端的專案選取器下拉式選單中選取專案。

  3. 按一下「開啟」

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

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

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

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

    • 事件:選取要叫用觸發條件的存放區事件。

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

      • 推送新代碼:設定觸發條件,在包含特定代碼的修訂時啟動建構。

    • 來源:選取要監控事件的存放區和對應的分支版本或標記。

      • 存放區:從可用存放區清單中選取所需存放區。如要連結新的存放區,請參閱「連結至來源存放區」。

      執行建構作業時,存放區的內容會複製到 /workspace,這是 Cloud Build 使用的預設工作目錄。如要進一步瞭解工作目錄,請參閱建構設定總覽頁面

      • 分支版本標記:指定要比對的分支版本或標記值的規則運算式。標記中不得使用正斜線 (/)。如要進一步瞭解可接受的規則運算式語法,請參閱 RE2 語法
    • 設定:選取位於遠端存放區的建構設定檔,或建立內嵌的建構設定檔,以便用於建構。

      • 類型:選取要用於建構作業的設定類型。
        • Cloud Build 設定檔 (yaml 或 json):使用建構設定檔來設定。
        • Dockerfile:使用 Dockerfile 進行設定。
        • Buildpacks:使用Buildpacks 進行設定。
      • 位置:指定設定檔的位置。

        • 存放區:如果設定檔位於遠端存放區,請提供建構設定檔Dockerfile 目錄或 buildpacks 目錄的位置。如果建構設定類型為 Dockerfile 或建構包,您需要為產生的映像檔提供名稱,並視需要為建構作業設定逾時時間。提供 Dockerfile 或 Buildpack 映像檔名稱之後,您會看見建構作業將執行的 docker buildpack 指令預覽。
        • Buildpack 環境變數 (選用):如果您選取 buildpacks 做為設定類型,請按一下「Add pack environment variable」,指定 Buildpack 環境變數和值。如要進一步瞭解 Buildpack 環境變數,請參閱「環境變數」。
        • 內嵌:如果您選取「Cloud Build 設定檔 (yaml 或 json)」做為設定選項,則可以內嵌指定建構設定檔。按一下「Open Editor」,即可使用 YAML 或 JSON 語法在Google Cloud 主控台中編寫建構設定檔。按一下「完成」即可儲存建構設定。

    • 服務帳戶:選取叫用觸發條件時要使用的服務帳戶。如果未選取服務帳戶,系統會使用預設的 Cloud Build 服務帳戶

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

gcloud

執行下列指令:

    gcloud beta builds triggers create cloud-source-repositories \
    --repo=REPO_NAME \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval

其中:

  • REPO_NAME 是存放區的名稱。
  • BRANCH_PATTERN 是存放區中用於叫用建構作業的分支名稱。
  • TAG_PATTERN 是存放區中用於叫用建構作業的標記名稱。
  • BUILD_CONFIG_FILE 是建構設定檔的路徑。
  • SERVICE_ACCOUNT (預先發布) 是與服務帳戶相關聯的電子郵件地址。如果未加入這個標記,系統會使用預設的 Cloud Build 服務帳戶
  • [選用] --require-approval 是用於設定觸發事件,要求核准的標記。

如需完整的標記清單,請參閱 gcloud 參考資料,瞭解如何建立 Cloud Source Repositories 的觸發事件

執行 gcloud 指令後,系統會使用 Cloud Source Repositories 建立觸發事件,您應該會看到類似以下的輸出內容:

  NAME         CREATE_TIME                STATUS
  trigger-001  2019-10-30T20:45:03+00:00

查看建構觸發條件

如要在 Google Cloud 控制台中查看觸發條件,請開啟 Cloud Build 的「Triggers」(觸發條件) 頁面。

如要在 Cloud Source Repositories 中查看特定專案的觸發事件,請按一下右上方的「Settings」,然後點選「Cloud Build Triggers」

略過建構觸發條件

在某些情況下,您可能會想要變更原始碼,但不想觸發建構,例如更新說明文件或設定檔時。

在這種情況下,您可以在修訂訊息中加入 [skip ci][ci skip],這樣就不會觸發建構。

例如:

Author: A User <auser@example.com>
Date:   Tue Apr 3 12:03:35 2018 -0700

Fixed customer affecting issue. [skip ci]

如果您想要稍後在該修訂版本上執行版本,請使用 [Run trigger] (執行觸發條件) 按鈕。

取消淺複製

為了在 Git 存放區建構原始碼,Cloud Source Repositories 會執行存放區的淺複製。當 Cloud Source Repositories 執行淺複製作業時,系統會從工作區中查看觸發建構的單一修訂版本,然後從該來源進行建構。Cloud Source Repositories 不會查看其他任何分支版本或歷史記錄。這麼做是為了提高效率。在 Cloud Source Repositories 擷取整個存放區和歷史記錄,只為了從單一修訂版本進行建構時,建構作業不會延遲。

如要在建構中包含更多存放區歷史記錄,請在您的建構設定檔中加入建構步驟以「取消淺複製」。例如:

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

如要進一步瞭解 git fetch,請參閱 git 參考資料。如需編寫版本設定檔的操作說明,請參閱「建構設定總覽」。

後續步驟