管理网站的实际和预览渠道、Release 和版本

Firebase Hosting 通过 Firebase 控制台和 Firebase CLI 两个途径提供工具,便于您管理您的 Hosting 网站的渠道、Release 和版本。

Hosting 基础架构概览

了解 Hosting 基础架构有助于您了解本页面介绍的管理选项。

每个 Firebase 项目都有一个默认的 Hosting 网站,该网站有权访问项目的所有资源(数据库、身份验证、函数等)。网站包含一个或多个渠道,其中每个渠道都与一个提供特定内容的网址和一个 Hosting 配置相关联。

<span class=Firebase Hosting 层次结构"/>

每个 Hosting 网站都有一个“实际”渠道,该渠道通过 (1) Firebase 预配的网站子网域(SITE_ID.web.appSITE_ID.firebaseapp.com)以及 (2) 任何已关联的自定义网域提供内容和 Hosting 配置。您也可以选择创建“预览”渠道,这些渠道通过临时的可共享“预览网址”(SITE_ID--CHANNEL_ID-RANDOM_HASH.web.app) 提供自己的内容和配置。

每个渠道提供的内容和配置会被封装到具有唯一标识符的版本对象中。当您在自己的网站中实施部署时,Firebase 会创建一个指向特定版本的 Release 对象。Release 包含有关部署的元数据,例如部署者及其部署时间。

在 Firebase 项目的 Hosting 信息中心内,您可以在“Release 历史记录”表中查看实际渠道的 Release 的完整历史记录。如果您有多个 Hosting 网站,点击查看即可查看目标网站的 Release 历史记录。如果您有任何预览渠道,这些渠道也会显示在 Hosting 信息中心内。

管理渠道的设置

您可以控制网站的每个渠道的设置。某些设置(如渠道失效时间)仅适用于预览渠道。

限制保留的 Release 数量

当您每次在某个渠道中实施部署(并创建 Release)时,Hosting 都会将与先前 Release 关联的版本保留在项目的 Hosting 存储空间中。您可以为项目中的每个渠道(包括实际渠道和预览渠道)设置要保留的 Release 数量。

  • Hosting 为何保留先前的 Release?
    对于实际渠道,通过保留之前的 Release,您可以在需要时回滚到网站的先前版本。对于预览渠道,尚不支持回滚。

  • 为什么要限制保留的 Release 数量?
    此功能有助于控制项目的 Hosting 存储空间的用量级别,因为先前 Release 的内容保留在这些存储空间中。您可以通过控制台的“存储”标签页监控 Hosting 的存储用量。

  • 当您限制要保留的 Release 数量时,会发生什么情况?
    当您设置要保留的 Release 数量上限时,系统会安排删除超出您所设上限的所有 Release 的内容,从最早的 Release 开始

为渠道设置 Release 存储限制的方法如下:

  1. Firebase 控制台中,访问 Release 存储设置对话框:

    • 对于实际渠道
      在网站的“Release 历史记录”表中,点击 ,然后选择 Release 存储设置

    • 对于任何预览渠道
      在预览渠道对应的行中,点击 ,然后选择渠道设置

  2. 输入您希望保留的 Release 数量,然后点击保存

设置预览渠道的失效时间

默认情况下,预览渠道自创建之日起 7 天内有效,而您网站的实际渠道永不失效。

当预览渠道失效后,系统将安排在 24 小时内删除该渠道及其 Release 和关联的版本。关联的预览网址也会被停用。如果某个版本与另一个 Release 相关联(例如,如果您将某个版本从一个渠道克隆到同一网站中的另一个渠道,则会发生这种情况),则系统不会删除此版本。

Hosting 支持使用两种不同的方式来控制渠道的失效时间:

  • Firebase 控制台
    在预览渠道对应的行中,点击 ,然后选择渠道设置。输入失效的日期和时间。

  • Firebase CLI
    当您在预览渠道中实施部署时,请传递 --expires DURATION 标志,例如:

    firebase hosting:channel:deploy new-awesome-feature --expires 7d

    失效时间不得超出部署之日起 30 天。使用 h 表示小时,d 表示天,w 表示周(例如,12h7d2w)。

将版本从一个渠道克隆到另一个渠道

您可以将部署的版本从一个渠道克隆到其他渠道。您可以跨实际或预览渠道、跨 Hosting 网站,甚至跨 Firebase 项目进行克隆。

克隆命令还会在“目标”渠道中实施部署,以便系统通过“目标”渠道的关联网址自动提供克隆的 Hosting 内容和配置。

此功能适合用于进行版本跟踪。如果您需要确定您所部署的就是在其他渠道中已查看和/或测试过的内容,也可以使用此功能。下面是一些示例:

  • 从“质量检查”预览渠道克隆到您网站的实际渠道(即将推出!)

  • 从网站的实际渠道克隆到“调试”预览渠道(例如在回滚之前)

  • 从 Firebase 的“预演”项目中的渠道克隆到 Firebase 的“生产”项目中的预览渠道

要克隆版本,请从任何目录中运行以下命令:

firebase hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:TARGET_CHANNEL_ID

将每个占位符替换为下列内容:

  • SOURCE_SITE_IDTARGET_SITE_ID:这些是包含渠道的 Hosting 网站的 ID。

    • 对于默认 Hosting 网站,请使用您的 Firebase 项目 ID。
    • 您可以指定属于同一 Firebase 项目中的 Hosting 网站,也可以指定属于不同 Firebase 项目的网站。
  • SOURCE_CHANNEL_IDTARGET_CHANNEL_ID:是渠道的标识符。

    • 对于实际渠道,请使用 live 作为渠道 ID。
    • 如果指定的“目标”渠道尚不存在,则该命令会先创建该渠道,然后在其中实施部署。

回滚到网站的先前版本

您可以进行回滚,以提供网站实际渠道的先前版本。此操作在某些情况下非常有用,例如:您当前的 Release 存在问题,您希望回滚以提供网站的已知有效版本;或者,您的网站可能为节假日或特殊活动提供了临时内容,现在您希望回滚以提供“常规”内容。

通过回滚,您可以创建一个新 Release,该 Release 会提供与之前的 Release 相同的内容。在“Release 历史记录”表中,两个 Release 将列出相同的版本标识符。

以下是回滚方法:

  1. Firebase 控制台内您的网站对应的“Release 历史记录”表中,将光标悬停在要回滚到的上一个 Release 条目上。

  2. 点击 ,然后选择回滚

手动删除 Release

您可能需要手动从实际渠道中删除 Release 才能释放项目的 Hosting 存储空间。您只能删除先前的 Release,而不能删除实际网站上当前提供的 Release。

当您删除某个 Release 时,实际上删除的是其内容,系统会安排在 24 小时内删除该内容。Release 对象本身会被保留,因此您仍可以查看其元数据(部署者及其部署时间)。

删除 Release 的方法如下:

  1. Firebase 控制台内您网站对应的“Release 历史记录”表中,将光标悬停在要删除的上一个 Release 条目上。

  2. 点击 ,然后选择删除

手动删除文件

Firebase Hosting 中,如要从部署的网站删除所选文件,一个常用方法是先在本地删除文件,然后重新部署。

手动删除预览渠道

可以点击要预览的渠道来预览渠道。在此视图中,您可以查看、删除和还原与特定渠道关联的最新部署和版本。您可以删除预览渠道,但不能删除网站的实际渠道。

当您删除某个预览渠道后,系统将安排在 24 小时内安排删除该渠道及其 Release 和相关联版本。关联的预览网址也会被停用。如果某个版本与另一个 Release 相关联(例如,如果您将某个版本从一个渠道克隆到同一网站中的另一个渠道,则会发生这种情况),则系统不会删除此版本。

Hosting 支持使用两种不同方式来删除预览渠道:

  • Firebase 控制台
    在预览渠道对应的行中,点击 ,然后选择删除渠道。确认删除。

  • Firebase CLI
    从任何目录运行以下命令:

    firebase hosting:channel:delete CHANNEL_ID

用于预览渠道和克隆的 CLI 命令

用于预览渠道的命令

如果您拥有多个 Hosting 网站,则适用于预览渠道的所有命令都支持部署目标。

命令 说明
firebase hosting:channel:create CHANNEL_ID

使用指定的 CHANNEL_ID,在默认 Hosting 网站中创建一个新的预览渠道

此命令不会在渠道中实施部署。

firebase hosting:channel:delete CHANNEL_ID

删除指定的预览渠道

您无法删除网站的实际渠道。

firebase hosting:channel:deploy CHANNEL_ID

Hosting 内容和配置部署到指定的预览渠道

如果预览渠道尚不存在,则此命令会先在默认 Hosting 网站中创建渠道,然后在该渠道中实施部署。

firebase hosting:channel:list 列出默认 Hosting 网站中的所有渠道(包括“实际”渠道)
firebase hosting:channel:open CHANNEL_ID 打开浏览器以转到指定渠道的网址,或者在无法打开浏览器的情况下返回该网址

用于版本克隆的命令

命令 说明
firebase hosting:clone \
SOURCE_SITE_ID:SOURCE_CHANNEL_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

将指定“源”渠道中最近部署的版本克隆到指定的“目标”渠道

此命令还会在指定的“目标”渠道中实施部署。如果“目标”渠道尚不存在,则该命令会在“目标”Hosting 网站中创建一个新的预览渠道,然后在该渠道中实施部署。

firebase hosting:clone \
SOURCE_SITE_ID:@VERSION_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

将指定的版本复制到指定的“目标”渠道

此命令还会在指定的“目标”渠道中实施部署。如果“目标”渠道尚不存在,则该命令会在“目标”Hosting 网站中创建一个新的预览渠道,然后在该渠道中实施部署。

您可以在 Firebase 控制台的 Hosting 信息中心中找到 VERSION_ID