本頁說明如何使用 Cloud Build 將應用程式部署至 App Engine。如果您是 Cloud Build 新手,請先閱讀快速入門指南和建構設定總覽。
App Engine 是全代管的無伺服器平台,適用於大規模開發和代管網頁應用程式。如要進一步瞭解 App Engine,請參閱 App Engine 說明文件。
事前準備
啟用 App Engine API:
準備好應用程式原始碼。原始碼必須儲存在 GitHub 或 Bitbucket 等存放區。
如要在本頁面執行
gcloud指令,請安裝 Google Cloud CLI。
必要的「身分與存取權管理」權限
-
在 Google Cloud 控制台中,前往「Cloud Build 權限」settings頁面:
針對指定的 Cloud Build 服務帳戶或預設 Cloud Build 服務帳戶,將下列角色的狀態設為「已啟用」:
- App Engine 管理員 (
roles/appengine.appAdmin):允許 Cloud Build 將新版本部署至 App Engine。- 在「指派服務帳戶使用者角色」面板中,選擇要模擬身分的服務帳戶,然後按一下「授予權限」。
- Storage 管理員 (
roles/storage.admin):可從 Cloud Storage 讀取及寫入資料。 - Artifact Registry 寫入者 (
roles/artifactregistry.writer):允許從 Artifact Registry 提取映像檔,以及寫入 Artifact Registry。 - 記錄寫入者 (
roles/logging.logWriter):允許將記錄項目寫入 Cloud Logging。 - Cloud Build 編輯者 (
roles/cloudbuild.builds.editor):允許服務帳戶執行建構作業。
- App Engine 管理員 (
設定部署作業
Cloud Build 可讓您使用任何開放給大眾使用的容器映像檔執行工作。如要這麼做,請在 Cloud Build 設定檔中,於建構 step 中指定映像檔。
App Engine 提供 gcloud app deploy 指令,可使用您的原始碼建構映像檔,並將該映像檔部署至 App Engine。您可以在設定檔中使用 cloud-sdk
image 做為建構步驟,在映像檔中叫用 gcloud 指令。系統會將已傳送至這個建構步驟的引數直接傳送至 gcloud CLI,進而讓您在這個映像檔中執行任何 gcloud 指令。
如要將應用程式部署至 App Engine,請按照下列步驟操作:
建立名為
cloudbuild.yaml或cloudbuild.json的 Cloud Build 設定檔。在設定檔中:
- 新增
name欄位,指定cloud-sdk建構步驟。 - 新增
entrypoint欄位,以便在叫用cloud-sdk時使用bash工具。 在
args欄位中,叫用gcloud app deploy指令並設定timeout,供 App Engine 叫用 Cloud Build 時使用。這是必要步驟,因為 Cloud Build 建構步驟和建構的預設逾時為 10 分鐘,而 App Engine 部署可能需要更長的時間才能完成。指定較長的逾時時間,可確保gcloud app deploy完成的時間超過 10 分鐘時,建構不會逾時。使用 App Engine 標準環境時發生逾時錯誤:只有在使用 App Engine 彈性環境時,才能按照這裡的說明設定逾時。App Engine 標準環境不允許設定建構逾時。如果您使用 Cloud Build 在 App Engine 標準環境中部署應用程式,但建構作業因逾時錯誤而失敗,建議改用 App Engine 彈性環境或 Cloud Run,而非 App Engine 標準環境。
新增超過 10 分鐘的 build
timeout值。
YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy'] timeout: '1600s'JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "bash", "args": [ "-c", "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy" ] } ], "timeout": "1600s" }- 新增
啟動建構作業,其中
SOURCE_DIRECTORY是原始碼的路徑或網址,而REGION是支援的建構區域之一,可啟動建構作業:gcloud builds submit --region=REGION SOURCE_DIRECTORY
持續部署
您可以建立 Cloud Build 觸發條件,自動將軟體部署至 App Engine。您可以設定觸發條件,在更新原始碼時建構及部署映像檔。
如要自動將應用程式部署至 App Engine,請按照下列步驟操作:
在存放區中新增設定檔,並加入叫用
gcloud app deploy指令的步驟:YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy'] timeout: '1600s'JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "bash", "args": [ "-c", "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy" ] } ], "timeout": "1600s" }使用上一個步驟中建立的設定檔,建立建構觸發程序:
在 Google Cloud 控制台中開啟「Triggers」(觸發條件) 頁面:
在頁面頂端的專案選取器下拉式選單中選取專案。
按一下「開啟」。
按一下「建立觸發條件」。
在「Create trigger」(建立觸發條件) 頁面中輸入下列設定:
輸入觸發條件的名稱。
選取要觸發的存放區事件。
選取包含原始碼和建構設定檔的存放區。
指定分支版本或標記名稱的規則運算式,以啟動觸發程序。
「Configuration」(設定):選擇您先前建立的建構設定檔。
按一下「建立」即可儲存建構觸發條件。
每次將新程式碼推送至存放區時,系統都會自動在 App Engine 上啟動建構及部署作業。
如要進一步瞭解如何建立 Cloud Build 觸發條件,請參閱「建立及管理建構觸發條件」。
後續步驟
- 瞭解如何部署至 Cloud Run
- 瞭解如何在 Compute Engine 上執行藍綠部署
- 瞭解如何在 GKE 上部署
- 瞭解如何部署至 Cloud Run functions
- 瞭解如何部署至 Firebase
- 瞭解如何排解建構錯誤。