Firebase App Hosting 利用 Cloud Build 将您的 应用源代码转换为容器化格式,以便在 Cloud Run 上进行部署。
构建流程通过以下关键阶段运行:
ubuntu:工作区初始化。
preparer:收集应用源代码和配置。
pre-buildpack:准备 buildpack 环境。
build:安装依赖项并构建应用。
publisher:最终确定生产 Cloud Run 容器。
这五个步骤直接对应于 Cloud Build中显示的构建步骤,位于Google Cloud控制台中:

工作区初始化
此阶段对应于 ubuntu 构建步骤。 它会初始化构建工作区,确保为后续构建步骤使用的目录设置正确的文件权限。
Preparer
此阶段负责处理构建前逻辑。它会读取、清理和写入用户定义的环境变量。它还会取消引用并固定 apphosting.yaml 文件中指定的任何密钥。
Pre-buildpack
此步骤为云原生 Buildpack 生命周期 准备环境。这包括运行一个 shim,该 shim 将在上一个阶段准备的配置和环境变量转换为 CNB 工具所需的格式。
构建
这是构建流程的核心,负责生成可运行的容器映像和定义 build 配置的 bundle.yaml 文件。它利用云原生 Buildpack
和生命周期创建器
二进制文件来高效打包
应用。如需详细了解 bundle.yaml 文件,请访问 GitHub。
Buildpack 负责将应用源代码转换为可用于生产用途的容器映像。Firebase App Hosting 将多个 buildpack 链接在一起以完成构建流程:
- 运行时 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。
构建清理政策
Firebase App Hosting 会强制执行自动构建保留和清理政策。根据此政策, App Hosting 会保留过去 14 天内成功构建的版本及其关联的 Cloud Run 修订版本。此外,为确保您 始终有构建版本可供回滚,App Hosting 会保留您最近 5 个 成功构建的版本和发布版本,无论其创建时间如何。
App Hosting 绝不会删除或移除当前处于活跃 流量拆分中或与正在进行的发布相关联的构建版本。
当较旧的构建版本超出这些保留期限时,其内部状态会更新为 EXPIRED。您无法对 EXPIRED
构建版本执行即时回滚,并且从
Firebase控制台中移除回滚到这些构建版本的选项。相反,您需要创建一个以相同来源(git 提交、Artifact Registry 中的容器或 Google Cloud Storage 存储分区)为目标的新构建版本,并发布该版本。Artifact RegistryGoogle Cloud Storage
节省构建资源的一种方法是控制触发自动发布版本的频率。请参阅 管理自动发布版本。
了解详情
整个 App Hosting 构建流程都是开源的。
- buildpack 代码位于 Google Cloud buildpacks 代码库中
- 框架适配器的代码位于 firebase-framework-tools 代码库中
- 详细了解 云原生 buildpack 和 Cloud Build