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