版本

管理发布

发布是项目正式发布新版本以便社区可以使用的时刻。发布有两种类型

  • 遵循 语义版本控制 且被认为是生产就绪的常规发布。
  • 不被认为是生产就绪的预发布版本,旨在让社区预览即将到来的更改。

发布经理

技术指导委员会 (TSC) 的一名成员被指派管理每个计划的发布。发布经理在发布前一天的 TSC 会议上确定。

发布经理负责

  1. 周五的计划发布。
  2. 周末监控问题。
  3. 确定周一是否需要进行补丁发布。
  4. 发布补丁版本(如果需要)。

发布经理应在发布后的周一向整个团队征求意见,以再次检查是否需要进行补丁发布。

发布经理需要拥有 ESLint 的 npm 双因素身份验证访问权限才能进行发布。

发布沟通

每个计划的发布都与自动生成的发布问题相关联(示例)。发布问题是团队了解发布状态的信息来源,并包含发布经理应遵循的清单。

流程

在计划发布的当天,发布经理应按照发布问题中的步骤进行操作。

所有与发布相关的沟通都在 Discord 上 #team 频道的一个线程中进行。

在计划发布后的周一,发布经理需要确定是否需要进行补丁发布。如果自计划发布以来发生以下任何情况,则认为补丁发布是必要的

  • 回归错误导致人们的 lint 构建在之前通过的情况下失败。
  • 任何给用户带来很多问题的错误(通常由于新功能而发生)。

补丁发布的决定应在周一尽早做出。如果需要进行补丁发布,则按照与计划发布过程相同的步骤进行操作。

在极少数情况下,如果已知发布存在严重的回归错误,并且周一尚未修复,则可能需要进行第二次补丁发布。如果发生这种情况,发布经理应在发布问题上宣布情况,并保持问题开放,直到所有补丁发布完成。但是,通常最好修复下一个发布周期的错误,而不是进行第二次补丁发布。

在补丁发布发布后(或不需要补丁发布),关闭发布问题并通知团队他们可以再次开始合并 semver-minor 更改。

发布参数

下表显示了在 Jenkins 上启动 eslint-js Release@eslint/js 包发布)和 eslint Releaseeslint 包发布)作业以发布具有最新功能的新版本时,选择作为 RELEASE_TYPE 的选项示例。在这两个作业中,应选择 main 作为 RELEASE_BRANCH

HEAD 版本 期望的下一个版本 eslint-js 发布
RELEASE_TYPE
9.25.0 9.25.1 补丁
9.25.0 9.26.0 次要
9.25.0 10.0.0-alpha.0 alpha.0
10.0.0-alpha.0 10.0.0-alpha.1 alpha
10.0.0-alpha.1 10.0.0-beta.0 beta
10.0.0-beta.0 10.0.0-beta.1 beta
10.0.0-beta.1 10.0.0-rc.0 rc
10.0.0-rc.0 10.0.0-rc.1 rc
10.0.0-rc.1 10.0.0 主要
HEAD 版本 期望的下一个版本 eslint 发布
RELEASE_TYPE
9.25.0 9.25.19.26.0 最新
9.25.0 10.0.0-alpha.0 alpha
10.0.0-alpha.0 10.0.0-alpha.1 alpha
10.0.0-alpha.1 10.0.0-beta.0 beta
10.0.0-beta.0 10.0.0-beta.1 beta
10.0.0-beta.1 10.0.0-rc.0 rc
10.0.0-rc.0 10.0.0-rc.1 rc
10.0.0-rc.1 10.0.0 最新

当发布先前主要版本线的新版本时,选择作为 RELEASE_TYPE 的选项取决于 HEAD 版本是否为预发布版本。在这两个作业中,应选择相应的开发分支(例如,v9.x-dev)作为 RELEASE_BRANCH

HEAD 版本 先前主要版本线版本 期望的下一个版本 eslint-js 发布
RELEASE_TYPE
10.0.0-alpha.0 9.25.0 9.25.1 补丁
10.0.0-alpha.0 9.25.0 9.26.0 次要
10.0.0 9.25.0 9.25.1 维护.补丁
10.0.0 9.25.0 9.26.0 维护.次要
HEAD 版本 先前主要版本线版本 期望的下一个版本 eslint 发布
RELEASE_TYPE
10.0.0-alpha.0 9.25.0 9.25.19.26.0 最新
10.0.0 9.25.0 9.25.19.26.0 维护

紧急发布

紧急发布是计划外且不是定期计划发布或预期的补丁发布。

一般来说,我们尽量不进行紧急发布。即使存在回归错误,最好等到周一查看是否出现任何其他问题,以便补丁发布可以修复尽可能多的问题。

唯一的真正例外是 ESLint 对大多数当前用户完全不可用时。例如,我们曾经推送过一个对所有人报错的版本,因为它缺少一些核心文件。在这种情况下,紧急发布是合适的。

故障排除

npm publish 返回 404

这通常是由于与 npm 令牌相关的权限错误引起的。

  • release-please 使用在一年后过期的细粒度访问令牌。此令牌与 eslintbot npm 帐户关联,需要每年三月重新生成。如果访问令牌已过期,则 npm publish 返回 404。
  • Jenkins 使用没有过期日期的经典访问令牌,但它确实需要 2FA 代码才能发布。如果 2FA 代码不正确,则 npm publish 返回 404。
更改语言