Firebase App Hosting 會使用 Cloud Build 將應用程式原始碼轉換為容器化格式,以便部署至 Cloud Run。
建構程序會經過下列主要階段:
ubuntu:Workspace 初始化。
準備者:收集應用程式原始碼和設定。
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 HostingApp Hosting 後端會使用這項資訊,以適當的設定建立 Cloud Run。
建立資源清理政策
Firebase App Hosting 強制執行自動建構保留和清除政策。根據這項政策,App Hosting 會保留過去 14 天內成功建構的版本,以及相關的Cloud Run修訂版本。此外,為確保您隨時都能復原建構作業,App Hosting 會保留最近 5 個成功的建構和推出作業,不論這些作業的存續時間長短。
App Hosting絕不會刪除或移除目前處於有效流量分配狀態,或與進行中推出作業相關聯的版本。
如果舊版建構作業超過保留期限,系統會將其內部狀態更新為 EXPIRED。您無法對 EXPIRED 版本執行即時復原,且這些版本的復原選項會從 Firebase 控制台中移除。您必須建立以相同來源為目標的新建構版本 (可以是 Git 提交、Artifact Registry 中的容器或 Google Cloud Storage 值區),然後推出該版本。
如要節省建構資源,可以控管觸發自動推出作業的頻率。請參閱「管理自動推出功能」。
瞭解詳情
整個App Hosting建構程序都是開放原始碼。
- buildpack 程式碼位於 Google Cloud buildpacks 存放區
- 架構轉接程式的程式碼位於 firebase-framework-tools 存放區
- 進一步瞭解 Cloud Native Buildpack 和 Cloud Build