管理发布
发布是项目正式发布新版本以便社区可以使用的时刻。发布有两种类型
- 遵循 语义版本控制 且被认为是生产就绪的常规发布。
- 不被认为是生产就绪的预发布版本,旨在让社区预览即将到来的更改。
发布经理
技术指导委员会 (TSC) 的一名成员被指派管理每个计划的发布。发布经理在发布前一天的 TSC 会议上确定。
发布经理负责
- 周五的计划发布。
- 周末监控问题。
- 确定周一是否需要进行补丁发布。
- 发布补丁版本(如果需要)。
发布经理应在发布后的周一向整个团队征求意见,以再次检查是否需要进行补丁发布。
发布经理需要拥有 ESLint 的 npm 双因素身份验证访问权限才能进行发布。
发布沟通
每个计划的发布都与自动生成的发布问题相关联(示例)。发布问题是团队了解发布状态的信息来源,并包含发布经理应遵循的清单。
流程
在计划发布的当天,发布经理应按照发布问题中的步骤进行操作。
所有与发布相关的沟通都在 Discord 上 #team
频道的一个线程中进行。
在计划发布后的周一,发布经理需要确定是否需要进行补丁发布。如果自计划发布以来发生以下任何情况,则认为补丁发布是必要的
- 回归错误导致人们的 lint 构建在之前通过的情况下失败。
- 任何给用户带来很多问题的错误(通常由于新功能而发生)。
补丁发布的决定应在周一尽早做出。如果需要进行补丁发布,则按照与计划发布过程相同的步骤进行操作。
在极少数情况下,如果已知发布存在严重的回归错误,并且周一尚未修复,则可能需要进行第二次补丁发布。如果发生这种情况,发布经理应在发布问题上宣布情况,并保持问题开放,直到所有补丁发布完成。但是,通常最好修复下一个发布周期的错误,而不是进行第二次补丁发布。
在补丁发布发布后(或不需要补丁发布),关闭发布问题并通知团队他们可以再次开始合并 semver-minor 更改。
发布参数
下表显示了在 Jenkins 上启动 eslint-js Release
(@eslint/js
包发布)和 eslint Release
(eslint
包发布)作业以发布具有最新功能的新版本时,选择作为 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.1 或 9.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.1 或 9.26.0 |
最新 |
10.0.0 |
9.25.0 |
9.25.1 或 9.26.0 |
维护 |
紧急发布
紧急发布是计划外且不是定期计划发布或预期的补丁发布。
一般来说,我们尽量不进行紧急发布。即使存在回归错误,最好等到周一查看是否出现任何其他问题,以便补丁发布可以修复尽可能多的问题。
唯一的真正例外是 ESLint 对大多数当前用户完全不可用时。例如,我们曾经推送过一个对所有人报错的版本,因为它缺少一些核心文件。在这种情况下,紧急发布是合适的。
故障排除
npm publish
返回 404
这通常是由于与 npm 令牌相关的权限错误引起的。
release-please
使用在一年后过期的细粒度访问令牌。此令牌与eslintbot
npm 帐户关联,需要每年三月重新生成。如果访问令牌已过期,则npm publish
返回 404。- Jenkins 使用没有过期日期的经典访问令牌,但它确实需要 2FA 代码才能发布。如果 2FA 代码不正确,则
npm publish
返回 404。