本頁說明如何使用 Cloud Build 將應用程式部署至 Cloud Run 函式。如果您是 Cloud Build 新手,請先參閱快速入門導覽課程和建構設定總覽。
Cloud Run functions 是用來建構及連結雲端服務的無伺服器執行環境。有了 Cloud Run functions,即可編寫單一用途的函式,並將其附加到您的雲端基礎架構和服務產生的事件。一旦監控的事件發生,就會觸發您的函式。如要進一步瞭解 Cloud Run functions,請參閱 Cloud Run functions 說明文件。
事前準備
啟用 Cloud Run functions API:
準備好應用程式原始碼。原始碼必須儲存在 GitHub 或 Bitbucket 等存放區。
如要在本頁面執行
gcloud
指令,請安裝 Google Cloud CLI。
必要的「身分與存取權管理」權限
-
在 Google Cloud 控制台中,前往「Cloud Build 權限」settings頁面:
針對指定的 Cloud Build 服務帳戶或預設 Cloud Build 服務帳戶,將下列角色的狀態設為「已啟用」:
- Cloud Functions 開發人員 (
roles/cloudfunctions.developer
) | 部署及管理函式。- 在「指派服務帳戶使用者角色」面板中,選擇要模擬身分的服務帳戶,然後按一下「授予權限」。
- Cloud Run 管理員 (
roles/run.admin
):允許 Cloud Build 服務帳戶將新版本部署至 Cloud Run。 - 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
):允許服務帳戶執行建構作業。
- Cloud Functions 開發人員 (
設定部署作業
Cloud Build 可讓您使用任何開放給大眾使用的容器映像檔執行工作。如要這麼做,請在 Cloud Build 設定檔中,於建構 step
中指定映像檔。
Cloud Run 函式提供 gcloud functions deploy
指令,可從包含函式程式碼的目錄部署函式。您可以在設定檔中使用 cloud-sdk
映像檔做為建構步驟,在映像檔中叫用 gcloud
指令。傳送至這個建構步驟的引數會直接傳送至 Google Cloud CLI,因此您可以在這個映像檔中執行任何 gcloud
指令。
如要將應用程式部署至 Cloud Run 函式,請按照下列步驟操作:
- 在專案根目錄中,建立名為
cloudbuild.yaml
或cloudbuild.json
的 Cloud Build 設定檔。 在設定檔中:
- 新增
name
欄位,並指定gcloud
建構步驟。 - 在
args
欄位中新增functions deploy
,叫用gcloud functions deploy
指令。 如要瞭解可用的設定選項,請參閱gcloud functions deploy
參考資料。 --source=.
表示原始碼位於目前工作目錄中。
YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: - gcloud - functions - deploy - FUNCTION_NAME - --region=FUNCTION_REGION - --source=. - --trigger-http - --runtime=RUNTIME
JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "args": [ "gcloud", "functions", "deploy", [ "FUNCTION_NAME" ], "--region=FUNCTION_REGION", "--source=.", "--trigger-http", "--runtime=RUNTIME" ] } ] }
將上述設定檔中的預留位置值替換為下列值:
FUNCTION_NAME
是您要部署的 Cloud Run 函式名稱。 如要更新現有函式,這個值必須與要更新的函式名稱相符。FUNCTION_REGION
是您要部署 Cloud Run 函式的區域。如需支援的區域清單,請參閱 Cloud Run 函式位置。--trigger-http
是這個函式的觸發條件類型,在本例中為 HTTP 要求 (Webhook)。RUNTIME
是執行函式的執行階段。
如要進一步瞭解如何使用
gcloud functions deploy
,請參閱 Cloud Run functions 說明文件。- 新增
使用上一個步驟建立的設定檔啟動建構作業:
gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY
將上述設定檔中的預留位置值替換為下列值:
CONFIG_FILE_PATH
是建構設定檔的路徑。SOURCE_DIRECTORY
是原始碼的路徑或網址。REGION
是支援的建構區域之一。
如果您未在
gcloud builds submit
指令中指定CONFIG_FILE_PATH
和SOURCE_DIRECTORY
,Cloud Build 會假設設定檔和原始碼位於目前的工作目錄中。
持續部署
您可以建立 Cloud Build 觸發條件,自動將軟體部署至 Cloud Run 函式。您可以設定觸發條件,在更新原始碼時建構及部署映像檔。
如要自動部署至 Cloud Run 函式,請按照下列步驟操作:
在存放區根目錄中,新增設定檔,其中包含叫用
gcloud functions deploy
指令的步驟:YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: - gcloud - functions - deploy - FUNCTION_NAME - --region=FUNCTION_REGION - --source=. - --trigger-http - --runtime=RUNTIME
JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "args": [ "gcloud", "functions", "deploy", [ "FUNCTION_NAME" ], "--region=FUNCTION_REGION", "--source=.", "--trigger-http", "--runtime=RUNTIME" ] } ] }
將上述設定檔中的預留位置值替換為下列值:
FUNCTION_NAME
是您要部署的 Cloud Run 函式名稱。 如要更新現有函式,這個值必須與要更新的函式名稱相符。FUNCTION_REGION
是您要部署 Cloud Run 函式的區域。如需支援的區域清單,請參閱 Cloud Run 函式位置。--trigger-http
是這個函式的觸發條件類型,在本例中為 HTTP 要求 (Webhook)。RUNTIME
是執行函式的執行階段。
使用上一個步驟中建立的設定檔,建立建構觸發程序:
在 Google Cloud 控制台中開啟「Triggers」(觸發條件) 頁面:
在頁面頂端的專案選取器下拉式選單中選取專案。
點選「建立觸發條件」。
在「Name」(名稱) 欄位中,輸入觸發條件的名稱。
在「區域」下方,選取觸發條件的區域。
在「事件」下方,選取要啟動觸發條件的存放區事件。
在「來源」下方,選取存放區和分支版本或標記名稱,以啟動觸發程序。如要進一步瞭解如何指定要自動建構的分支版本,請參閱建立建構作業觸發條件。
在「設定」下方,選取「Cloud Build 設定檔 (YAML 或 JSON)」。
在「Cloud Build 設定檔位置」欄位中,在
/
後面輸入cloudbuild.yaml
。按一下「建立」即可儲存建構觸發條件。
每次將新程式碼推送至存放區時,系統都會自動觸發建構作業,並部署到 Cloud Run functions。
如要進一步瞭解如何建立 Cloud Build 觸發條件,請參閱「建立及管理建構觸發條件」。
後續步驟
- 瞭解如何在 Compute Engine 上執行藍綠部署
- 瞭解如何部署至 Cloud Run
- 瞭解如何在 GKE 上部署
- 瞭解如何部署至 Firebase
- 瞭解如何部署至 App Engine
- 瞭解如何排解建構錯誤。