透過程式碼集部署多個環境

我們通常會使用相同的程式碼集部署多個環境,且每個環境的設定略有不同。舉例來說,您可能會想將較少 CPU 和 RAM 指派給測試環境,或是希望確保實際工作環境至少有 1 個執行個體處於啟用狀態,而且可以處理要求。

如要進一步瞭解環境,請參閱「環境總覽」和「設定 Firebase 專案的一般最佳做法」。

先備知識

步驟 0:設定實際工作環境中的 Git 分支版本

如果您偏好從 main 分支版本部署實際工作環境,請直接跳到下一個步驟。如果您想從其他分支版本部署正式環境production,您必須先在 GitHub 建立這個資料庫。

如要使用 GitHub UI 建立實際工作環境分支版本,請參閱在存放區中建立及刪除分支版本

如何在本機建立實際工作環境分支版本:

$ git checkout -b production
$ git push origin production:production

步驟 1:設定實際工作環境 apphosting.yaml

假設您想確保實際工作環境一律至少持續執行 1 個機器,且有一些實際工作環境專屬的環境變數。如要設定這項功能,可以在專案根目錄建立 apphosting.yaml 檔案,並加入以下內容:

# Saved at <repository root>/apphosting.yaml

runConfig:
  minInstances: 1

env:
  - variable: STORAGE_BUCKET
    value: <production Cloud Storage bucket name>

如要查看支援設定的完整清單,請參閱「設定應用程式託管」。

編輯 apphosting.yaml 後,請將其推送至 GitHub 存放區:

$ git add apphosting.yaml
$ git commit -m "Added production App Hosting backend configuration."
$ git push origin

步驟 2:將程式碼集部署至實際工作環境

設定實際工作環境 Git 分支版本後,您就可以建立新的實際工作環境 App Hosting 後端。如需詳細操作說明,請參閱「開始使用 App Hosting」一文。

如要使用 Firebase 主控台建立新後端,請前往 https://console.firebase.google.com/project/_/apphosting 開始使用。

如要在本機建立,您必須先安裝 Firebase CLI,然後執行:

firebase apphosting:backends:create --project <replace with your PRODUCTION project ID>

如果這個指令成功讓實際工作環境的後端應運作,App Hosting 會自動建構及部署實際工作環境分支版本的新修訂版本。

步驟 3:設定暫存 Git 分支版本

按照上述步驟在 GitHub 上建立暫存分支版本:

$ git checkout -b staging
$ git push origin staging:staging

步驟 4:設定測試環境 apphosting.yaml

測試分支版本應該已有實際工作環境 apphosting.yaml 的副本。讓我們來進行修改,讓 App Hosting 可以在閒置時關閉測試環境,也能為 STORAGE_BUCKET 環境變數設定不同的值。

# Saved at <repository root>/apphosting.yaml

runConfig:
  minInstances: 0

env:
  - variable: STORAGE_BUCKET
    value: <some other staging Cloud Storage bucket name>

完成編輯後,請將檔案推送至暫存 Git 分支版本:

$ git add apphosting.yaml
$ git commit -m "Added staging App Hosting backend configuration."
$ git push origin

步驟 5:將程式碼集部署至測試環境

設定測試環境 Git 分支版本後,即可按照上述步驟將程式碼集部署至測試環境:

firebase apphosting:backends:create --project <replace with your STAGING project ID>

完成這個步驟後,您會有兩個 App Hosting 後端,而後端採用相同的程式碼集:一個用於實際工作環境,另一個用於測試環境,每個後端分別用於不同的 Firebase 專案。

後續步驟