App Hosting 建構程序

Firebase App Hosting 會使用 Cloud Build 將應用程式原始碼轉換為容器化格式,以便部署至 Cloud Run。

建構程序包含下列重要階段:

  1. ubuntu:初始化工作區。

  2. preparer:收集應用程式原始碼和設定。

  3. pre-buildpack:準備 buildpack 環境。

  4. build:安裝依附元件並建構應用程式。

  5. publisher:完成正式版 Cloud Run 容器。

這五個步驟直接對應到 Google Cloud 控制台 Cloud Build 中顯示的建構步驟:

Google Cloud 控制台檢視畫面中 Cloud Build 步驟的螢幕截圖

初始化工作區

這個階段對應到 ubuntu 建構步驟。這個步驟會初始化建構工作區,確保後續建構步驟使用的目錄已設定正確的檔案權限。

Preparer

這個階段負責處理預先建構邏輯。它會讀取、清理及寫入使用者定義的環境變數。此外,也會取消參照並固定 apphosting.yaml 檔案中指定的任何密鑰。

預先建構套件

這個步驟會為 Cloud Native Buildpacks 生命週期準備環境。這包括執行 shim,將前一階段準備的設定和環境變數,轉譯為 CNB 工具預期的格式。

建構

這是建構程序的核心,負責產生可執行的容器映像檔,以及定義建構設定的 bundle.yaml 檔案。這項工具會使用 Cloud Native Buildpacks 和生命週期建立工具二進位檔,有效率地封裝應用程式。如要進一步瞭解 bundle.yaml 檔案,請前往 GitHub。

Buildpacks 負責將應用程式原始碼轉換為可用於正式環境的容器映像檔。Firebase App Hosting 會將多個建構套件鏈結在一起,以完成建構程序:

  1. 執行階段 Buildpack:確保包含執行基本 Node.js 應用程式所需的所有元件,並安裝依附元件。
  2. Monorepo Buildpack:設定後續的 Buildpack,以處理不同的單一存放區情境。
  3. Framework Buildpack:安裝正確的架構轉接器 (例如 Angular 或 Next.js),並準備後續的 Buildpack。

    架構轉接器負責執行正式版建構指令,並將任何相關的架構專屬設定值對應至 App Hosting 可讀取的標準格式。

  4. Package Manager Buildpack:使用 npm、yarn 或 pnpm 執行依附元件安裝作業,並建構應用程式。

  5. 輸出套件 Buildpack:定義執行指令,並準備執行輸出套件。

發布者

這個最終階段會封裝從應用程式原始碼擷取的所有資訊,以及建構容器映像檔,並將其傳送至 App Hosting 後端。App 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 bucket),然後推出該版本。

如要節省建構資源,其中一個方法是控管自動推出作業的觸發頻率。請參閱「管理自動推出功能」。

瞭解詳情

整個 App Hosting 建構程序都是開放原始碼。