App Hosting 构建流程

Firebase App Hosting 利用 Cloud Build 将应用源代码转换为适合在 Cloud Run 上部署的容器化格式。

构建流程通过以下关键阶段运行:

  1. ubuntu:工作区初始化。

  2. preparer:收集应用源代码和配置。

  3. pre-buildpack:准备 buildpack 环境。

  4. build:安装依赖项并构建应用。

  5. publisher:最终确定生产 Cloud Run 容器。

这五个步骤直接对应于 Cloud Build中显示的构建步骤,位于Google Cloud控制台中:

Google Cloud 控制台中的 Cloud Build 步骤视图的屏幕截图

工作区初始化

此阶段对应于 ubuntu 构建步骤。 它会初始化构建工作区,确保为后续构建步骤使用的目录设置正确的文件权限。

Preparer

此阶段负责处理构建前逻辑。它会读取、清理和写入用户定义的环境变量。它还会取消引用并固定 apphosting.yaml 文件中指定的任何密钥。

Pre-buildpack

此步骤为 Cloud Native Buildpacks 生命周期 准备环境。这包括运行一个 shim,该 shim 会将上一个阶段中准备的配置和环境变量转换为 CNB 工具所需的格式。

构建

这是构建流程的核心,负责生成可运行的容器映像和定义 build 配置的 bundle.yaml 文件。它利用 Cloud Native Buildpacks 和 Lifecycle creator 二进制程序来高效打包 应用。如需详细了解 bundle.yaml 文件,请访问 GitHub

Buildpack 负责将应用源代码转换为可用于生产用途的容器映像。Firebase App Hosting 将多个 buildpack 链接在一起以完成构建流程:

  1. Runtime Buildpack:确保包含运行基本 Node.js 应用所需的所有组件,并安装依赖项。
  2. Monorepo Buildpack:配置后续 buildpack 以处理不同的 monorepo 场景。
  3. Framework Buildpack:安装正确的框架适配器(如 Angular 或 Next.js),并准备后续 buildpack。

    框架适配器负责运行生产化构建 命令,并将任何相关的框架专用配置值映射到 可由 App Hosting 读取的标准格式。

  4. Package Manager Buildpack:执行依赖项安装并 使用 npm、yarn 或 pnpm 构建应用。

  5. Output Bundle Buildpack:定义运行命令并准备输出 软件包以供执行。

Publisher

此最终阶段会将从应用源代码中提取的所有信息以及构建容器映像打包,并将其发送到 App Hosting 后端。然后,App Hosting 后端会使用此信息通过适当的配置设置 Cloud Run

了解详情

整个 App Hosting 构建流程都是开源的。