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