通常會從相同的程式碼集部署多個環境,每個環境的設定略有不同。舉例來說,您可能會想為測試環境指派較少的 CPU 和 RAM,或是確保實際環境至少有 1 個執行個體處於活動狀態,並準備好處理要求。您也可以視要使用的環境和資源而指定不同的環境變數和機密資料。
本指南說明如何將正式版和測試版環境部署至各自的 Firebase 專案。您可以按照相同的原則,部署至其他類型的環境。如要進一步瞭解環境,請參閱「環境總覽」和「設定 Firebase 專案的一般最佳做法」。
事前準備
- 應用程式程式碼已儲存在 GitHub 中。
- 您已為各個環境建立不同的專案,例如
my-production-firebase-project
和my-staging-firebase-project
。請務必為實際工作環境的 Firebase 專案加上「實際工作環境」環境類型標記。 - 您已在每個專案中建立 App Hosting 後端,並將實際分支設定為要部署的 GitHub 分支 (例如
main
)。如需更多資訊,請參閱「App Hosting 入門」。
步驟 0:在 apphosting.yaml 中建立預設設定
App Hosting 支援名為 apphosting.yaml
的設定檔,可用於管理應用程式的執行階段設定 (CPU、並行作業、記憶體限制等) 和環境變數。此外,它也支援以 Cloud Secret Manager 管理的密鑰參照,可讓您安全地將檔案存入原始碼控管。詳情請參閱「設定後端」。
如要開始使用,請在應用程式的根目錄中建立 apphosting.yaml
檔案。這是備用設定檔,會在找不到特定環境設定檔時使用。儲存在 apphosting.yaml
中的值應為可在所有環境中安全使用的預設值。
接下來的章節將說明如何針對特定環境,在 apphosting.yaml
中覆寫預設值。這個範例流程會建立測試環境。
步驟 1:設定環境名稱
每個 App Hosting 後端都有「環境名稱」設定。這個欄位可用於將後端對應至特定環境的設定檔,且可隨時變更。每個後端只能設定一個環境名稱。
如要設定後端的環境名稱,請按照下列步驟操作:
- 在 Firebase 主控台中選取測試專案 (本例為 my-staging-firebase-project)。
- 從左側導覽面板中選取 App Hosting。
- 在所選後端中,按一下「查看資訊主頁」。
- 在「設定」分頁中,選取「部署」。
- 在「環境名稱」下方輸入環境名稱。您可以隨意命名環境。在本例中為「staging」。
- 按一下 [儲存]。
當後端觸發 App Hosting 推播 (透過 Git 推送或透過控制台手動推播) 時,App Hosting 會先檢查 apphosting.ENVIRONMENT_NAME.yaml
檔案,再改回 apphosting.yaml
。
步驟 2:建立環境專屬的 apphosting.yaml
檔案
針對特定環境設定,請建立名為 apphosting.ENVIRONMENT_NAME.yaml
的檔案,以便指定特定環境的覆寫值。這個檔案的格式與預設的 apphosting.yaml 相同,且必須位於應用程式的根目錄中,並與 apphosting.yaml
檔案並列。
在建構期間,App Hosting 會合併這兩個檔案,並將優先順序給予特定環境 YAML 檔案中的值,而非基礎 apphosting.yaml
檔案。
在這個範例中,您會在應用程式的根目錄中建立名為 apphosting.staging.yaml
的檔案:
runConfig:
cpu: 1
memoryMiB: 512
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
假設您已有如下所示的 apphosting.yaml
:
runConfig:
cpu: 3
memoryMiB: 1024
maxInstances: 4
minInstances: 0
concurrency: 100
env:
- variable: API_URL
value: api.service.com
availability:
- BUILD
- RUNTIME
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
最終的合併輸出內容 (可在 Cloud Build 記錄中查看) 如下所示:
runConfig:
cpu: 1
memoryMiB: 512
maxInstances: 4
minInstances: 0
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
請注意,某些 runConfig
值 (例如 CPU) 已遭到覆寫,任何重疊的環境變數也同樣如此。
步驟 3:部署程式碼庫
編輯環境專屬 apphosting.ENVIRONMENT_NAME.yaml
檔案後,請將檔案推送至 GitHub:
$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push
任何標記為此環境名稱的後端都會使用您在對應 YAML 檔案中指定的特定覆寫值,並在找不到值時改用 apphosting.yaml
。如果後端沒有關聯的環境名稱,您可以繼續使用 apphosting.yaml。
後續步驟
- 深入瞭解:透過 Firebase 程式碼研究室,將代管應用程式與 Firebase 驗證和 Google AI 功能整合:Next.js | Angular
- 連結自訂網域。
- 設定後端。
- 監控推播、網站使用情形和記錄檔。