AMP

AMP 发布计划

AMP 的新版本每周二都会推送给所有 AMP 页面。一旦 AMP 的更改合并到 amphtml 代码库的主分支中,通常需要 1-2 周的时间才能让所有用户看到更改生效。

AMPHTML 验证器有其自己的发布计划

发布渠道

AMP 运行时和扩展是通过各种不同的发布渠道提供的。每个渠道都为开发者和 AMP HTML 项目本身服务。请参阅发布节奏部分,详细了解来自 ampproject/amphtml 代码库的代码如何以及何时进入发布版本。

要确定 PR 是否已包含在以下任何发布渠道中,请查找 GitHub 标签PR Use: In CanaryPR Use: In ProductionPR Use: In LTS(有关详细信息,请参阅确定您的更改是否在发布版本中部分)。

每日构建

每日构建发布渠道(顾名思义)每个工作日晚上都会更新。此过程是自动化的,并且不保证任何给定的每日构建版本都没有错误或其他问题。每天午夜(太平洋时间)过后,会选择当天最后一个“绿色”提交作为发布截止点。绿色构建表示该构建上的所有自动化测试均已通过。

每日构建提供了一种机制来快速检测和解决问题,并防止它们到达流量更大的每周发布渠道。它还有助于减少受新引入问题影响的用户数量。

可以加入每日构建渠道,以测试过去几天合并的拉取请求。有关详细信息,请参阅 [developing.md] 中的加入部分

每周构建

每周发布渠道被认为是主要的“常青”发布渠道。每周,上周的 beta 发布版本会升级到 stable 发布渠道,上周的最后一个 nightly 发布版本会升级到 experimentalbeta 发布渠道(请参阅详细计划)。

创建发布版本时使用了两组构建配置:canary 配置和 production 配置。experimentalbeta 发布渠道基于相同的提交构建。但是,experimental 渠道使用 canary 配置,而 beta 渠道使用 production 配置。canary 配置启用可能在 production 中关闭的实验性组件和功能。可以通过 实验页面 加入 experimentalbeta 渠道。

stable 发布渠道使用 production 配置构建,并为大多数 AMP 流量提供服务。由于 beta 发布渠道也是使用 production 配置构建的,因此它代表了下周将成为 stable 的确切版本(可能会进行 cherry-pick 来修复最后一刻的问题;请参阅贡献代码)。

Beta 和实验性渠道

Beta实验性渠道是 AMP 下一个 Stable 版本的预发布候选版本。每个周二(除非有发布冻结的周),上周的 nightly 会被提升到开发人员可选的 betaexperimental 渠道。在 1 天的时间里,我们验证这些渠道中是否未引入功能或性能回归,然后我们在周三将此版本推广到少量流量。然后在下周二将同一版本推广到 stable 渠道。

可以加入这些渠道。有关详细信息,请参阅 [developing.md] 中的加入部分

加入 Beta 渠道的目的是

  • 测试和使用即将发布的 AMP 运行时版本
  • 在质量保证 (QA) 中使用,以确保您的网站与下一版本的 AMP 兼容

实验性渠道的目的是

  • 测试和使用尚未向所有用户提供的新功能
  • 在质量保证 (QA) 中使用,以确保您的网站与 AMP 的即将推出的仍在开发中的功能兼容

实验性渠道可能不太稳定,并且可能包含尚未向所有用户提供的功能。

长期稳定版 (lts)

lts 发布渠道为一月间隔提供先前的 stable 构建。在每个月的第二个星期一,当前的 stable 发布版本会升级到 lts。不建议所有 AMP 发布者使用此渠道。它提供的目的是让希望不那么频繁地在其网站上执行 QA 周期的发布者,可以通过将特定的网页选择加入 lts 渠道来实现(请参阅lts 自述文件)。

如果一个月的第二个星期一恰逢假期,则将在发布冻结结束后执行升级。

使用 lts 发布渠道的发布者不应使用新推出的功能。由于周期较长,lts 发布版本可能会比 ampproject/amphtmlHEAD 版本落后长达 7 周。请参阅确定您的更改是否在发布版本中部分,以验证更改是否会在您选择的发布周期中准备就绪。

确定您的更改是否在发布版本中

Type: Release GitHub 问题用于跟踪当前和过去版本的状态;从初始剪切、通过 experimental/beta 渠道进行测试,到最终通过 stablelts 渠道发布。有关发布的公告会在 AMP Slack #release 渠道上发布(注册 Slack)。

您可以使用以下方法之一确定给定版本中包含哪些更改

发布节奏

我们在发布节奏方面有意谨慎。

在确定我们应该多久向每个人推送 AMP 的新版本时,我们必须权衡许多因素,包括

  • 使用 AMP 构建的数百万个网站/数十亿个页面的稳定性
  • 当我们推送新版本时可能发生的缓存失效
  • 快速发布新功能的愿望

在考虑所有这些因素后,我们得出了 1-2 周的推送周期。到目前为止,我们发现这是一个合理的折衷方案,但我们将继续评估所有这些因素,并且将来可能会进行更改。

详细计划

我们尽量严格遵守此计划,但复杂情况可能会导致延迟。您可以在 Type: Release GitHub 问题AMP Slack #release 渠道注册 Slack)中跟踪有关任何发布的最新状态。

  • 每个工作日晚上:会自动裁剪并发布一个新的 nightly 构建到AMP 每日构建渠道
  • 周二 @ 太平洋时间上午 11 点:从最近的已知良好的每夜构建通道版本创建新的实验性beta 版本,并分别提供给选择加入 AMP 实验通道AMP Beta 通道的用户。
  • 周三:我们检查实验通道Beta 通道用户的错误报告,如果一切正常,我们会将 beta 版本推送给 1% 的 AMP 页面
  • 周四至周一:我们继续监控实验通道Beta 通道用户的错误率和错误报告,以及 1% 使用实验性/beta 构建版本的页面
  • 下周二:beta 版本完全升级为稳定版(即所有 AMP 页面现在都将使用此版本)

发布冻结

有时我们会跳过将 AMP 发布到生产环境,这称为发布冻结。

如果宣布在第 N 周进行为期一周的发布冻结

  • 上周的稳定版将额外保留一周,即不会像通常情况下那样在第 N 周将新版本升级到稳定版
  • 但是,新的 beta实验性版本将在冻结周(第 N 周)期间创建。
  • 正常计划将在第 N+1 周恢复,即第 N 周的实验性/beta 版本在第 N+1 周升级到稳定版。此外,新的实验性/beta 版本将在第 N+1 周创建,并在第 N+2 周升级到稳定版
  • 如果第 N-1 周升级的稳定版原计划在第 N 周升级到 lts,则现在将在第 N+1 周的周一升级到 lts
  • 每夜构建版本仍会生成和升级,因为它们是完全自动化的。

发布冻结可能发生在以下情况下

  • 没有足够的人员来将 AMP 版本推送到稳定版并进行监控时。目前,大多数执行 AMP 发布的人员都在美国,因此通常是美国主要节假日,如独立日(7 月 4 日)、感恩节(11 月的第四个星期四)、圣诞节(12 月 25 日)和新年除夕/元旦(12 月 31 日/1 月 1 日)。
  • 紧急情况,例如由技术指导委员会 (TSC)或执行发布的人员确定的安全或隐私问题。
  • TSC 认为代码库的稳定性特别重要时的其他情况。

在所有情况下(紧急情况除外),发布冻结将提前至少一个月宣布。

请注意,除非另行宣布,否则发布冻结并不意味着代码冻结。在发布冻结期间仍可以编写、审查和合并代码。