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