通过代码库部署多个环境

从相同的代码库部署多个环境的情况很常见, 只是配置略有不同例如,您可能想将 为预演环境减少 CPU 和 RAM 生产环境让至少 1 个实例保持活跃状态并已准备好提供服务 请求。您可能还需要指定不同的环境变量和 Secret,具体取决于您要使用的环境和资源。

本指南介绍如何将生产环境和预演环境分别部署到 一个单独的 Firebase 项目遵循相同的原则, 不同类型的环境如需详细了解环境 请参阅概述 环境常规 设置 Firebase 的最佳做法 项目

前提条件

  • 您的应用代码已存储在 GitHub 中。
  • 您已经为自己的每个资源 环境(例如 my-production-firebase-projectmy-staging-firebase-project。请务必为您的正式版 Firebase 添加代码 “production”的环境 type
  • 在每个项目中,您都创建了一个 App Hosting 后端,其中包含 分支,设置为您要部署的 GitHub 分支(例如 main)。请参阅 开始使用 App Hosting 了解详情 信息。

第 0 步:在 apphosting.yaml 中创建默认配置

App Hosting 支持一个名为 apphosting.yaml 的配置文件来管理 运行时设置(CPU、并发、内存限制等)和环境 变量。它还支持引用通过 Cloud Secret Manager,让您可以安全地签入源代码控制。有关 请参阅配置 后端

首先,请在应用的根目录中创建一个 apphosting.yaml 文件。 这是一个后备配置文件 找不到特定于环境的配置文件。存储在 apphosting.yaml 应该是可在所有环境中安全使用的默认值。

后续部分介绍了如何替换 apphosting.yaml 中的默认值 特定环境此示例流程会创建一个预演环境。

第 1 步:设置环境名称

每个 App Hosting 后端都有一个环境名称设置。此字段为 用于将后端映射到特定于环境的配置文件,并且可以 可以随时更改您只能为每个后端设置一个环境名称。

如需设置后端的环境名称,请执行以下操作:

  1. 在 Firebase 控制台中,选择您的预演项目(在此示例中为 my-staging-firebase-project)。
  2. 从左侧导航栏中选择 App Hosting
  3. 点击所选后端上的查看信息中心
  4. 设置标签页中,选择部署
  5. 环境名称下,输入环境的名称。您可以命名 自己喜欢的任何环境在本例中,我们将选择 staging
  6. 点击保存

当后端触发 App Hosting 发布时(在 Git 上) 推送或手动通过控制台进行),App Hosting 将检查是否有 提前 apphosting.ENVIRONMENT_NAME.yaml 个文件 回退到 apphosting.yaml

第 2 步:创建特定于环境的 apphosting.yaml 文件

对于特定于环境的配置,请创建名为 apphosting.ENVIRONMENT_NAME.yaml,即可 指定特定于环境的替换值。此文件的格式与 默认的 apphosting.yaml,并且必须位于 应用的根目录以及 apphosting.yaml

在构建时,App Hosting 会合并这两个文件,并将优先级设为 通过基本 apphosting.yaml 指定环境专用 YAML 文件中的值 文件。

在此示例中,您将在apphosting.staging.yaml 应用的根目录:


runConfig:
  cpu: 1
  memoryMiB: 512
  concurrency: 5

env:
  -   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

假设您已经有一个如下所示的 apphosting.yaml

runConfig:
  cpu: 3
  memoryMiB: 1024
  maxInstances: 4
  minInstances: 0
  concurrency: 100

env:
  -   variable: API_URL
    value: api.service.com
    availability:
      -   BUILD
      -   RUNTIME

  -   variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

最终合并的输出(您可以在 Cloud Build 日志中查看) 如下所示:

runConfig:
  cpu: 1
  memoryMiB: 512
  maxInstances: 4
  minInstances: 0
  concurrency: 5

env:
  -   variable: API_URL
    value: api.staging.service.com
    availability:
      -   BUILD

  -   variable: STORAGE_BUCKET
    value: mybucket.appspot.com
    availability:
      -   RUNTIME

  -   variable: API_KEY
    secret: secretIDforAPI

  -   variable: DATABASE_URL
    secret: secretStagingDatabaseURL

请注意,某些 runConfig 值(例如 CPU)也已被覆盖 与任何重叠的环境变量相同

第 3 步:部署代码库

修改完环境专用 apphosting.ENVIRONMENT_NAME.yaml 文件后,将您的文件推送到 GitHub:

$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push

使用此环境名称标记的所有后端都将使用特定替换项 您在相应的 YAML 文件中指定的值,然后再回退到 如果未找到值,则返回 apphosting.yaml。对于没有关联 环境名称,则可以继续使用 apphosting.yaml。

后续步骤