Skip to content

release guid

xiaosansiji edited this page May 30, 2022 · 1 revision

版本发布流程

发布频率

组件库正常每周滚动发布版本,一般在周三/周四,尽量不在周五或晚上发布,防止周末等非工作时间响应不及时

如果遇到用户要求紧急修复 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 中构建发版时卡壳

生成 changelog

  • 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 image

调整内容

  • (可选)调整 changelog 内容,适当合并相同组件发布日志内容,调整描述文案为使用者更易懂的形式,如
image
  • 各仓库都以子仓库的方式引入 Tencent/tdesign-common,tdesign-common 仓库中样式等更新有可能没有体现在组件库仓库的 changelog 中,需要人工 review 是否要将这些更新内容体现在 changelog 中,判断依据为是否有 DOM 结构或样式类名修改等,若有可能需要在日志中增加 BREAKING CHANGES 内容以提醒用户升级

确认 Changelog

删除 bot 评论中对应内容,会触发机器人自动在本次 PR 中新增一条 commit,提交评论中的日志内容:

image

新增的日志提交:

image

确认没问题,合并 release PR,以触发后续自动发布 npm 及部署新官网的操作:

image

以上自动化 CI 的实现可以参考:https://github.com/Tencent/tdesign-vue-next/blob/develop/.github/workflows/auto-release.yml

发布 Release

检查 npm 发布成功,查看官网 https://tdesign.tencent.com/ 确认部署完毕后,需要去仓库 GitHub 发布对应 Release:

image

可以点击利用 GitHub 的 Auto-generate release notes 生成本次 Release 的新贡献等信息:

image

其他日志内容 copy 上一步中生成的 Changelog 内容替换

image

通知

通过企微机器人通知群里用户更新:

  • 在本地执行 npm run robot 生成本次日志的企业微信消息
image
  • 复制 robotMsg.json 中内容到 Postman 等工具中,向固定企业微信机器人服务地址发送日志内容