了解 App Hosting 及其工作原理

App Hosting 可处理一系列复杂的后台任务,以简化 应用的部署本页面介绍了该任务流的关键部分, 提供有关您可能想要自定义流程的时间点的信息 具体取决于应用的需求

框架支持

App Hosting 为 Web 应用提供无需配置的构建和部署支持 以下框架开发而成:

  • Next.js 13 及更高版本
  • Angular 17.2 及更高版本

App Hosting:通过检查 package-lock.json 文件或其他锁定文件。如果您尝试 部署缺少锁文件的 Node.js 应用,App Hosting 将失败 构建和运行您的应用您可以通过在根目录中运行 npm install 来创建 package-lock.json

App Hosting 框架适配器有两个关键角色:

  1. 它们会解析源代码和任何框架专用配置文件(例如 next.config.js),以便了解应用的配置行为。
  2. 它们运行您应用的构建命令,以生成静态资源并创建 针对正式版应用的优化版本。

框架适配器使用 npm run build 构建 Node.js 应用,效果最佳 每个框架的默认构建脚本分别是 next build(用于 Next.js)和 ng build(适用于 Angular)。App Hosting 将尝试使用自定义 build 的构建 命令,但无法可靠地保证成功。

App Hosting 代码库集成的运作方式

GitHub 代码库与 App Hosting 之间的重要连接 由系统处理后端 Developer Connect, Google Cloud 的连接平台 外部 DevOps 工具。在创建 App Hosting 后端的过程中, Developer Connect 的界面工作流程将指导您完成 Firebase GitHub 应用。此过程中的关键步骤如下:

  1. 您向 Developer Connect 授予 Secret Manager 管理员 角色。这样,系统将凭据安全地存储为“密钥”在 Cloud Secret Manager
  2. 您授权 Firebase GitHub 应用访问您的 GitHub 代码库
  3. Developer Connect 会在您的 项目的 Secret Manager 代码库;请勿修改或删除此令牌。

此外,App Hosting 还可与 GitHub Check API 集成, 检查发布情况。通过这项检查,您可以在 GitHub 并调试部署流程,以防出现任何错误。

与 Firebase 和其他 Google 服务集成

App Hosting 会设置构建和运行时环境,以便您可以 使用 Google 初始化 Firebase Admin SDK 应用默认凭据。这样,您的后端就可以 与其他 Firebase 产品搭配使用。

App Hosting 后端服务账号

在构建期间和运行时,您的 App Hosting 后端通过 与服务账号共享其他 Google 服务。默认服务账号 这些用途是在您首次在App Hosting Firebase 项目:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

默认情况下,此服务账号适用于所有后端,并且 让您能够构建、运行和监控应用。它还具有 权限 使用应用默认凭据对 Admin SDK 进行身份验证,从而: 执行从 Cloud Firestore 加载数据等操作。请参阅 Firebase App Hosting 角色

如果您的应用在构建时需要与其他 Google 服务交互 您可以从运行中的后端自定义默认服务账号,方法是 添加角色例如,如果您的应用需要 Vertex AI 权限,您 可能需要添加 roles/aiplatform.user 或某种相关的角色。

关键术语和定义

  • 后端:执行 App Hosting 操作的托管资源的集合 来构建和运行您的 Web 应用。
  • 发布:运行中应用的特定版本,链接到 Git 提交。
  • 活动分支:部署到 您的实际网址。通常,特征分支所属的分支 合并了开发分支。

已知问题和限制

App Hosting 预览存在一些已知的限制:

  • 无法删除后端。
  • 目前尚不支持图片优化。
  • 在某些情况下,App Hosting 后端可能会返回 Intermittent connection error 条消息。修复 在后续版本中提供。
  • 修改了 Cache-Control 标头,将 CDN 缓存限制为 60 秒;在 未来,当 App Hosting 能够快速清除设备上的缓存时, 就会解除此限制
  • Set-Cookie 标头会从通过 App Hosting 个数据平面。我们会在后续版本中修复此问题。
  • 通过 Cloud Run 传送未缓存的静态文件;以 之后的版本将通过 App Hosting 来源存储和提供 以获得更好的性能。
  • App Hosting SKU 可能不会在 Firebase 控制台。我们会在后续版本中提供这些功能。
  • Firebase 控制台可能会间歇性显示“未找到 build,并且 无效”错误。
  • 目前,同一项目中的所有后端共享一个 GitHub 组织/账号。 它们可以关联到相应组织/账号下的不同代码库。 如需创建连接到不同 GitHub 账号的后端,请执行以下操作: 请将它们放在不同的项目中
  • 目前仅支持 us-central1 区域。
  • Next.js 中间件、重写和重定向在 Cloud Run,位于 CDN 后面。因为这些数据不会保护缓存 请务必设置 相应控制指令 呈现的内容