版本

管理发布

发布是指项目正式发布新版本以便社区使用。发布分为两种类型

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

发布经理

技术指导委员会 (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 帐户绑定,需要每年 3 月重新生成。如果访问令牌过期,则 npm publish 返回 404。
  • Jenkins 使用没有过期日期的经典访问令牌,但它确实需要 2FA 代码才能发布。如果 2FA 代码不正确,则 npm publish 返回 404。
更改语言