Firebase App Hosting 會使用 Cloud Build 將應用程式原始碼轉換為容器化格式,以便部署至 Cloud Run。
建構程序會經過下列主要階段:
ubuntu:工作區初始化。
準備者:收集應用程式原始碼和設定。
pre-buildpack:準備 buildpack 環境。
build:安裝依附元件並建構應用程式。
發布商:完成正式版 Cloud Run 容器。
這五個步驟直接對應至 Google Cloud 控制台 Cloud Build 中顯示的建構步驟:

工作區初始化
這個階段對應於 ubuntu 建構步驟。這個步驟會初始化建構工作區,確保後續建構步驟使用的目錄已設定正確的檔案權限。
準備者
這個階段負責處理建構前邏輯。這個函式會讀取、清除及寫入使用者定義的環境變數。此外,也會取消參照並釘選 apphosting.yaml 檔案中指定的任何密鑰。
Pre-buildpack
這個步驟會準備 Cloud Native Buildpacks 生命週期的環境。這項作業需要執行墊片,將上一個階段準備的設定和環境變數轉換為 CNB 工具預期的格式。
建構
這是建構程序的核心,負責產生可執行的容器映像檔,以及定義建構設定的 bundle.yaml 檔案。這項工具會使用 Cloud Native Buildpacks 和生命週期建立工具二進位檔,有效率地封裝應用程式。如要進一步瞭解 bundle.yaml 檔案,請前往 github。
Buildpacks 負責將應用程式原始碼轉換為可立即用於實際工作環境的容器映像檔。Firebase App Hosting 會將多個建構包串連在一起,完成建構程序:
- 執行階段建構包:確保包含執行基本 Node.js 應用程式所需的所有元件,並安裝依附元件。
- Monorepo Buildpack:設定後續的建構套件,以處理不同的 Monorepo 情境。
架構建構包:安裝正確的架構介面卡 (例如 Angular 或 Next.js),並準備後續的建構包。
架構轉接程式負責執行正式版建構指令,並將所有相關的架構專屬設定值對應至 App Hosting 可讀取的標準格式。
套件管理員 Buildpack:使用 npm、yarn 或 pnpm 執行依附元件安裝作業,並建構應用程式。
輸出套件建構包:定義執行指令,並準備要執行的輸出套件。
發布商
最後一個階段會封裝從應用程式原始碼擷取的所有資訊,以及建構容器映像檔,並傳送至App Hosting後端。App Hosting 後端會使用這項資訊,以適當的設定建立 Cloud Run。
瞭解詳情
整個 App Hosting 建構程序都是開放原始碼。
- buildpack 程式碼位於 Google Cloud buildpack 存放區
- 架構轉接程式的程式碼位於 firebase-framework-tools 存放區
- 進一步瞭解 Cloud Native 建構包和 Cloud Build