-
Notifications
You must be signed in to change notification settings - Fork 270
release guid
组件库正常每周滚动发布版本,一般在周三/周四,尽量不在周五或晚上发布,防止周末等非工作时间响应不及时
如果遇到用户要求紧急修复 bug,可以视情况发布 PATCH 或先行版本,判断标准:
- 影响范围大,大多数用户都可能会遇到问题:请遵照正常发布流程严格测试产物质量及整理 changelog 后发布 PATCH 版本,以使用户可以自动更新到
- 新上线的功能,仅有少量用户使用:可以不整理 changelog,直接发布先行版本供用户使用,如
x.y.z-alpha
目前还没有发布 1.0.0 正式版本,因此可以随时发布 PATCH、MINOR 及 MAJOR 版本,1.0.0 发布后 MINOR 及 MAJOR 版本的发布需要 PMC 团队决策后发布。
版本号设置遵循 SemVer 语义化版本控制规范 2.0.0,一切以保证用户版本稳定性为前提,原则如下:
- 当进行不兼容的 API 更改时,升级 MAJOR 版本
- 当以向后兼容的方式添加功能时,升级 MINOR 版本
- 当进行向后兼容的缺陷修复时,升级 PATCH 版本
目前我们还没有发布 1.0.0 版本,因此以 MINOR 作为 breaking change 时的迭代版本号
用户项目的 package.json 文件中一般使用 ^
或 ~
来限制包版本:
-
^
: 只会执行不更改最左边非零数字的更新,如果写入的是 ^0.13.0,可以更新到 0.13.1、0.13.2 等,但不能更新到 0.14.0 或更高版本。 如果写入的是 ^1.13.0,则当运行 npm update 时,可以更新到 1.13.1、1.14.0 等,但不能更新到 2.0.0 或更高版本 -
~
: 如果写入的是 〜0.13.0,则当运行 npm update 时,会更新到补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
参考 使用 npm 的语义版本控制、npm/node-semver
负责本次发布的同学应该
- review 这一迭代周期内的所有 PR 是否被正常合并,每个 PR 的描述是否准确,如果有关联的 issue,需要在 PR 评论中补充 issue 链接
- 是否所有 issue 都得到了处理,还未处理的 issue 需要视情况增加相关 label 如
help wanted
/need more info
等,以帮助社区的同学协助处理
- 本地更新 develop 分支,删除 node_modules 目录后重新安装依赖后,执行
npm run build
通过,避免后续在 GitHub Actions 中构建发版时卡壳
- 从
develop
新建release/x.y.z
分支,修改 package.json 中version
并提交到远端 - 仓库中发起
release/x.y.z
->develop
的 PR - 等待 CI 跑完,bot 自动在 PR 中评论生成的本周期内的 changelog 内容
例: Tencent/tdesign-vue-next release 0.15.3
- (可选)调整 changelog 内容,适当合并相同组件发布日志内容,调整描述文案为使用者更易懂的形式,如
- 各仓库都以子仓库的方式引入 Tencent/tdesign-common,tdesign-common 仓库中样式等更新有可能没有体现在组件库仓库的 changelog 中,需要人工 review 是否要将这些更新内容体现在 changelog 中,判断依据为是否有 DOM 结构或样式类名修改等,若有可能需要在日志中增加
BREAKING CHANGES
内容以提醒用户升级
删除 bot 评论中对应内容,会触发机器人自动在本次 PR 中新增一条 commit,提交评论中的日志内容:
新增的日志提交:
确认没问题,合并 release PR,以触发后续自动发布 npm 及部署新官网的操作:
以上自动化 CI 的实现可以参考:https://github.com/Tencent/tdesign-vue-next/blob/develop/.github/workflows/auto-release.yml
检查 npm 发布成功,查看官网 https://tdesign.tencent.com/ 确认部署完毕后,需要去仓库 GitHub 发布对应 Release:
可以点击利用 GitHub 的 Auto-generate release notes
生成本次 Release 的新贡献等信息:
其他日志内容 copy 上一步中生成的 Changelog 内容替换
通过企微机器人通知群里用户更新:
- 在本地执行
npm run robot
生成本次日志的企业微信消息
- 复制 robotMsg.json 中内容到 Postman 等工具中,向固定企业微信机器人服务地址发送日志内容
访问 TDesign 官网