本主題說明如何使用 Cloud Build 與 Cloud Source Repositories 自動化版本。
您可以設定 Cloud Build,在使用者推送變更到儲存於 Cloud Source Repositories 的檔案時,自動建構新映像檔。啟動自動版本的事件稱為版本觸發條件。這些觸發條件可確保您的容器映像檔保持在最新狀態。您也可以使用這些觸發條件建構與測試功能分支。
建構觸發條件可根據 Dockerfile 或建構設定檔執行建構作業。
使用 Dockerfile
如果您的建構設定要使用 Dockerfile,您需要指定 Dockerfile 目錄,並為產生的映像檔提供名稱。如要進一步瞭解如何建立 Dockerfile,請參閱 Docker 說明文件。
提供 Dockerfile 和映像檔名稱後,您會看到建構作業執行的 docker build 指令預覽,以及觸發條件設定的摘要。
使用版本設定檔
如要將建構設定檔用於建構設定,您需要提供建構設定檔的位置。
設定位置之後,您會看見觸發條件的摘要。
事前準備
啟用 Cloud Build API。
確認 Cloud Source Repositories 中有原始碼。
確認您有 Dockerfile 或建構設定檔。
如要使用預設 Cloud Build 服務帳戶以外的服務帳戶,請參閱「設定使用者指定的服務帳戶」一文。
其他資訊
版本觸發條件使用存放區的「淺複製」。若使用淺複製,則只有觸發自動建構的單次修訂版本會在工作區中查看。如需詳細資訊,以及瞭解如何包含更多存放區歷史記錄,請參閱取消淺複製。
如果您使用另一個代管 Git 供應商 (例如 GitHub 或 Bitbucket),且仍需將存放區完全複製到 Cloud Source Repositories,則針對您正在作業的專案,您必須擁有
cloudbuilds.builds.create權限。 Google Cloud這項權限通常透過cloudbuild.builds.editor角色授予。初次使用外部存放區設定自動建構觸發條件時,您需要設定該存放區的授權。詳情請參閱將存放區新增為遠端存放區。
設定外部存放區之後,Cloud Source Repositories 會建立存放區的鏡像。
如要瞭解 Cloud Build 的配額與限制,請參閱 Cloud Build 說明文件中的配額與限制。
建立自動建構觸發條件
控制台
在 Google Cloud 控制台中開啟「Triggers」(觸發條件) 頁面。
在頁面頂端的專案選取器下拉式選單中選取專案。
按一下「開啟」。
按一下「建立觸發條件」。
輸入下列觸發條件設定:
名稱:輸入觸發條件的名稱。
說明 (選填):輸入觸發條件的說明。
「Event」(事件):選取要叫用觸發條件的存放區事件。
推送至分支版本:設定觸發條件,在修訂特定分支版本時啟動建構。
推送新標記:設定觸發條件,在修訂版本包含特定標記時啟動建構。
來源:選取存放區和對應的分支版本或標記,以監控事件。
- 存放區:從可用存放區清單中選取所需存放區。如要連結新的存放區,請參閱「連結至來源存放區」。
執行建構作業時,存放區內容會複製到
/workspace,這是 Cloud Build 預設的工作目錄。如要進一步瞭解工作目錄,請參閱「建構設定總覽」頁面。- 分支版本或標記:指定要比對分支版本或標記值的規則運算式。標記不得使用正斜線 (
/)。 如要進一步瞭解可接受的規則運算式語法,請參閱 RE2 語法。
設定:選取遠端存放區中的建構設定檔,或建立內嵌建構設定檔,以用於建構作業。
- 類型:選取要用於建構作業的設定類型。
- Cloud Build 設定檔 (yaml 或 json): 使用建構設定檔進行設定。
- Dockerfile:使用
Dockerfile進行設定。 - 建構包:使用 buildpacks 進行設定。
位置:指定設定的位置。
- 存放區:如果設定檔位於遠端存放區,請提供建構設定檔、
Dockerfile目錄或建構套件目錄的位置。如果建構設定類型為Dockerfile或建構包,您需要為產生的映像檔提供名稱,並視需要設定建構作業的逾時時間。提供Dockerfile或建構套件映像檔名稱之後,您會看見建構將執行的docker build或pack指令預覽。 - Buildpack 環境變數 (選用):如果您選取
buildpacks做為設定類型,請按一下「新增套件環境變數」,指定 buildpack 環境變數和值。如要進一步瞭解建構包環境變數,請參閱「環境變數」。 內嵌:如果您選取「Cloud Build 設定檔 (yaml 或 json)」做為設定選項,可以內嵌指定建構設定。按一下「開啟編輯器」,在Google Cloud 控制台中使用 YAML 或 JSON 語法編寫建構設定檔。按一下「完成」即可儲存建構設定。
- 存放區:如果設定檔位於遠端存放區,請提供建構設定檔、
- 類型:選取要用於建構作業的設定類型。
服務帳戶:選取要用於叫用觸發條件的服務帳戶。如未選取服務帳戶,系統會使用預設的 Cloud Build 服務帳戶。
按一下「建立」即可儲存自動建構觸發條件。
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 參考資料。如需撰寫建構設定檔的操作說明,請參閱建構設定總覽。
後續步驟
- 瞭解如何在 Cloud Build 中手動啟動版本。
- 進一步瞭解如何建構、測試及部署成果。