管理发布
发布是指项目正式发布新版本以便社区使用。发布分为两种类型
- 常规发布遵循 语义化版本控制,并被视为生产就绪。
- 预发布不被视为生产就绪,旨在让社区预览即将发生的更改。
发布经理
技术指导委员会 (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 帐户绑定,需要每年 3 月重新生成。如果访问令牌过期,则npm publish
返回 404。- Jenkins 使用没有过期日期的经典访问令牌,但它确实需要 2FA 代码才能发布。如果 2FA 代码不正确,则
npm publish
返回 404。