在本機上建構和偵錯

本頁說明如何在本機電腦中使用 Cloud Build。您可以使用本機建構工具執行下列操作:

  • 在本機電腦中更快速地疊代建構。
  • 使用模擬測試檢查設定檔。

事前準備

  1. 安裝並初始化 Google Cloud SDK

  2. 安裝 Docker。最佳做法是使用與 Cloud Build 相同的 Docker 版本

  3. 您需要欲建構的原始碼、適用於該建構的建構設定檔,以及從本機電腦存取建構步驟所需任何工具與依附元件的權限。

  4. 如果您的建構需要存取私人註冊資料庫,請執行下列指令以安裝及設定 Cloud Build 適用的 Docker 憑證輔助程式

    gcloud components install docker-credential-gcr
    
    docker-credential-gcr configure-docker
    

安裝本機建構工具

本機建構工具是 Google Cloud SDK gcloud 工具的元件。您可以根據系統,使用 gcloud 指令、apt-getyum 安裝該建構工具。

如要安裝本機建構工具,請執行下列指令:

gcloud

gcloud components install cloud-build-local

apt-get

sudo apt-get install google-cloud-sdk-cloud-build-local

yum

sudo yum install google-cloud-sdk-cloud-build-local

安裝本機建構工具之後,如要查看:

  • 指令列說明,請執行下列指令:

    cloud-build-local --help
    
  • 本機建構工具的安裝版本,請執行下列指令:

    cloud-build-local --version
    

在本機建構

警告:請在您的本機電腦中一次執行一個建構,並行執行多個建構會導致本機建構工具失敗。

如果您尚未設定專案,可以使用快速入門導覽課程中的設定測試本機建構工具。

如要在本機建構,請執行下列指令:

cloud-build-local --config=[BUILD_CONFIG] --dryrun=false --push [SOURCE_CODE]

其中:

  • [BUILD_CONFIG] 是設定檔的路徑與名稱。
    • 例如,如果您的設定檔位於工作目錄中且名為 cloudbuild.json,請使用 --config=cloudbuild.json 標記。
    • 預設值為 cloudbuild.yaml,因此如果您的設定檔位於工作目錄中且名為 cloudbuild.yaml,則不需要新增這個標記。
  • [SOURCE_CODE] 是原始碼的路徑。
    • 與 Cloud Build 一樣,如果原始碼位於目前的工作目錄中,您可以針對原始碼使用 .
    • 如果您的建構不需要原始碼,請使用 --no-source 標記取代 [SOURCE_CODE]
  • --dryrun=false 允許執行建構。根據預設,標記 --dryrun 為 true。以預設值執行會檢查您的設定檔,但不會執行建構指令。您必須明確設定 --dryrun=false 才能執行建構。
  • --push 會將產生的映像檔推送到設定檔中 images 欄位定義的存放區。根據預設,系統會建構映像檔,但不會將映像檔推送至註冊資料庫。

完成建構之後,您可以透過 Docker 在本機電腦中找到建立的映像檔。如果您已將 --push 新增至建構指令,則可在指定的存放區中找到這些映像檔。

保留中間成果

在建構期間,系統會將中間成果放在名為 workspace 的目錄中。根據預設,建構工具會在建構結束時刪除工作區及其內容。

如要執行建構並保留工作區中的成果,請執行下列指令:

cloud-build-local --config=[BUILD_CONFIG] --dryrun=false --write-workspace=[LOCAL_DIRECTORY_PATH] [SOURCE_CODE]

其中:

  • [BUILD_CONFIG] 是設定檔的路徑,
  • [SOURCE_CODE] 是原始碼的路徑,
  • [LOCAL_DIRECTORY_PATH] 是要在本機電腦中儲存工作區的本機目錄。該目錄不得位於 [SOURCE_CODE] 目錄內

保留工作區可讓您達成以下目的:

  • 在對建構進行偵錯時,分析中間成果。
  • 存取建構工具在工作區中建立的建構結果 (例如二進位檔)。

在建構中使用 substitutions

如要在建構中使用 substitutions,請使用 --substitutions 標記以及您想替代的 key=value 組合。請注意,您可以為某些預設變數以及您已定義的變數指定值。

例如,

cloud-build-local --config=[BUILD_CONFIG] --dryrun=false --substitutions _KEY=value,_FOO=foo [SOURCE_CODE]

其中:

  • [BUILD_CONFIG] 是設定檔的路徑,
  • [SOURCE_CODE] 是原始碼的路徑,
  • 在這個範例中,系統會將 _KEY 替代為 value,並將 _FOO 替代為 foo

如要進一步瞭解 substitutions (包括必要語法),請參閱 Substitutions

在本機對建構進行偵錯

如要對建構進行偵錯,您可以執行下列操作:

本機建構會以可在執行時間使用的權限,在本機主機上執行。在 Cloud Build 中,建構步驟會以專案服務帳戶的權限執行。如果您要對權限問題進行偵錯,請務必將權限設定為與 Cloud Build 服務帳戶的權限相符,使本機建構所處的環境盡可能接近 Cloud Build 環境。

以模擬測試驗證建構

建構的模擬測試將會檢查設定檔,並在偵測到任何問題時產生錯誤訊息。模擬測試並不會執行建構,因此在您驗證設定檔時不會產生執行建構的負擔。使用本機建構工具是執行建構模擬測試的唯一方法。

  1. 使用下列指令,執行建構模擬測試:

    cloud-build-local --config=[BUILD_CONFIG] [SOURCE_CODE]
    

    其中:

    • [BUILD_CONFIG] 是設定檔的路徑,
    • [SOURCE_CODE] 是原始碼的路徑。
  2. 審查任何錯誤訊息並修正設定檔中的任何問題。

規定與限制

  • 本機建構工具只能在 Linux 或 macOS 中建構。
  • 本機建構工具會在指定主機上一次執行一個建構。並行執行多個建構會導致本機建構工具失敗。

本機建構工具與 Cloud Build 之間的差異

本機建構工具的設計目的是模仿 Cloud Build。在本機建構工具中成功執行的建構,應以相同行為方式在 Cloud Build 中執行。

這兩種建構工具之間存在以下差異:

  • 本機建構工具在本機電腦中執行,Cloud Build 在 Google Cloud Platform 中執行。
  • 如要執行建構,本機建構工具會使用您的個人帳戶,而 Cloud Build 會使用 cloudbuild 服務帳戶 [PROJECT_ID]@cloudbuild.gserviceaccount.com。如果您為本機建構工具設定個人帳戶的任何權限,可能需要針對 cloudbuild 服務帳戶複製這些權限。詳情請參閱設定服務帳戶權限
  • 兩種建構工具使用的 Docker 版本可能有所不同。在執行期間,每當安裝的 Docker 版本與 Cloud Build 中使用的版本不同時,本機建構工具都會顯示警告。最佳做法是使用與 Cloud Build 相同的 Docker 版本。

後續步驟

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Build