使用 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,則針對您正在作業的專案,您必須擁有 cloudbuilds.builds.create 權限。 Google Cloud這項權限通常透過 cloudbuild.builds.editor 角色授予。

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

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

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

建立自動建構觸發條件

控制台

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

    開啟「觸發條件」頁面

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

  3. 按一下「開啟」

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 服務帳戶:選取要用於叫用觸發條件的服務帳戶。如未選取服務帳戶,系統會使用預設的 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 建立觸發條件

使用 Cloud Source Repositories 執行 gcloud 指令建立觸發程序後,畫面會顯示類似以下的輸出內容:

  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 參考資料。如需撰寫建構設定檔的操作說明,請參閱建構設定總覽

後續步驟