Firebase App Hosting 會利用 Cloud Build,將應用程式原始碼轉換為容器化格式,以便在 Cloud Run 上部署。
建構程序會經過下列主要階段:
擷取:收集應用程式原始碼和設定。
建構:安裝依附元件並建構應用程式。
移交:完成正式版 Cloud Run 容器。
這三個步驟直接對應 Google Cloud 控制台 Cloud Build 中顯示的建構步驟 1、2 和 3:
擷取階段
這個階段負責處理建構前邏輯。它會讀取、消毒及寫入使用者定義的環境變數。也會解參照並固定 apphosting.yaml
檔案中指定的任何機密資料。
建構階段
這是建構程序的核心,負責產生可執行的容器映像檔和 bundle.yaml
檔案,用於定義建構設定。它會使用 Cloud Native Buildpacks 有效率地封裝應用程式。如要進一步瞭解 bundle.yaml
檔案,請前往 GitHub。
Buildpacks 負責將應用程式原始碼轉換為正式版容器映像檔。Firebase App Hosting 會將多個 Buildpack 連結在一起,以完成建構程序:
- Runtime Buildpack:確保已納入執行基本 Node.js 應用程式所需的所有必要元件,並安裝依附元件。
- Monorepo Buildpack:設定後續的 Buildpack,以便處理不同的 monorepo 情境。
架構 Buildpack:安裝正確的架構轉接程式 (例如 Angular 或 Next.js),並準備後續的 Buildpack。
架構轉接程式負責執行正式版建構指令,並將任何相關架構專屬設定值對應至 App Hosting 可讀取的標準格式。
套件管理員 Buildpack:執行依附元件安裝作業,並使用 npm、yarn 或 pnpm 建構應用程式。
輸出套裝組合 Buildpack:定義執行指令,並準備輸出套裝組合供執行。
交接階段
這個最終階段會將從應用程式原始碼擷取的所有資訊,加上建構容器映像檔,打包成封裝檔,然後傳送至 App Hosting 後端。App Hosting 後端會使用這些資訊,以適當的設定來設定 Cloud Run。
瞭解詳情
整個 App Hosting 建構程序都是開放原始碼。
- 建構包程式碼位於 Google Cloud Buildpacks 存放區
- 架構轉接器的程式碼位於 firebase-framework-tools 存放區
- 進一步瞭解 Cloud Native Buildpacks 和 Cloud Build