From 840c4774f426382b16fdddab18503280786f140c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?w=C5=AB=20y=C4=81ng?= Date: Sat, 9 Dec 2023 23:05:14 +0800 Subject: [PATCH] chore: update publish frequency descriptions (#2969) * chore: update Publish.md * chore: fix table test * chore: update PUBLISH.md --- PUBLISH.md | 48 ++++--------------- .../serial-number/controlled.test.jsx | 18 ++++--- 2 files changed, 19 insertions(+), 47 deletions(-) diff --git a/PUBLISH.md b/PUBLISH.md index e0127d94f..8b82e73de 100644 --- a/PUBLISH.md +++ b/PUBLISH.md @@ -2,50 +2,18 @@ ## 发布频率 -组件库正常每周滚动发布版本,一般在周三/周四,尽量不在周五或晚上发布,防止周末非工作时间响应不及时 +组件库正常每两周滚动发布版本,一般在周三/周四,尽量不在周五或晚上发布,防止周末非工作时间响应不及时 如果遇到用户要求紧急修复 bug,可以视情况发布 PATCH 或先行版本,判断标准: -- 影响范围大,大多数用户都可能会遇到问题:请遵照正常发布流程严格测试产物质量及整理 changelog 后发布 PATCH 版本,以使用户可以自动更新到 +- 影响范围大,大多数用户都可能会遇到问题:请遵照正常发布流程严格测试产物质量及整理 CHANGELOG 后发布 PATCH 版本,以使用户可以自动更新到 - 新上线的功能,仅有少量用户使用:可以不整理 changelog,直接发布先行版本供用户使用,如 `x.y.z-alpha` -## 版本号说明 - -版本号设置遵循 [SemVer 语义化版本控制规范 2.0.0](https://semver.org/lang/zh-CN/),一切以保证用户版本稳定性为前提,原则如下: - -- 当进行不兼容的 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 的语义版本控制](http://nodejs.cn/learn/semantic-versioning-using-npm)、[npm/node-semver](https://github.com/npm/node-semver#caret-ranges-123-025-004) - -## 发布人职责 - -负责本次发布的同学应该 - -- review 这一迭代周期内的所有 MR 是否被正常合并,每个 MR 的描述是否准确,如果有关联的 issue,需要在 MR 评论中补充 issue 链接 -- 是否所有 issue 都得到了处理,如果已有 mr,请在 issue 中评论 mr 链接(目前工蜂还不能像 GitHub 一样在 issue 中自动显示关联 mr) -- 根据 MR 和 issue 整理 changelog (可以使用 [publish-cli](https://github.com/Tencent/tdesign-starter-cli/tree/main/packages/publish-cli) 帮助生成) -- 如果发布了 Breaking Change 版本,应该把上一个 MAJOR 版本的版本号更新至官网历史版本处,以支持历史版本官网供用户查看。 - ## 发布流程 -- 从 `develop` 新建 `docs/x.y.z-changelog` 分支,整理 changelog 并 push 分支到远端 -- changelog 分支链接发到群里召唤小伙伴们一起 review -- review 无误,`squash merge` 到 develop,保持只有一条更改 changelog 内容的 commit -- 本地删除 node_modules 目录后重新安装依赖后,执行 `npm run build` 通过 -- 推送 develop 分支到远端,触发部署体验环境,验证体验环境无误 -- 本地 `git tag x.y.z` 后 `git push origin x.y.z`,触发 [TAG_PUSH](https://github.com/Tencent/tdesign-vue/blob/develop/.github/workflows/tag-push.yml) GitAction 进行发包动作 -- 包发布成功后,merge develop 到 main 分支,推送远端后触发官网部署流水线 -- 官网部署完毕后,企微机器人通知群里用户更新 -- copy changelog 到 GitHub repo release(后面考虑改成自动触发更新 release) -- 内网 mk TDesign 发版 Topic 下,copy changelog 内容发布新的版本更新动态 +- 从 `develop` 新建 `release/x.y.z` 分支,并修改 `package.json` 中的版本号,推送分支至远程仓库,并提交一个合入`develop`的 Pull Request 到仓库 +- 仓库的 Github Action 会自动整理上个版本至今 commit 对应的 CHANGELOG,并将 CHANGELOG 的 draft 作为一个评论推送到该 Pull Request 上 +- 发布人检查 CHANGELOG,并优化内容逻辑结构,确认无误后删除对于评论首行提示,Github Action 会将优化后的内容写入 CHANGELOG.md 内 +- 确认无误后,合并分支入`develop` +- 合入 `develop` 后,仓库会触发 Github Action 合入`main`分支,并将版本号作为 `tag` 打在仓库上,并触发 Github Action 执行 npm 版本发布流程 +- 合入 `main` 分支后,站点的部署流水线 web hook 会监听到 `main` 分支的新增 commit,并触发流水线,官网更新站点 diff --git a/src/table/__tests__/serial-number/controlled.test.jsx b/src/table/__tests__/serial-number/controlled.test.jsx index 79ed07470..f55379754 100644 --- a/src/table/__tests__/serial-number/controlled.test.jsx +++ b/src/table/__tests__/serial-number/controlled.test.jsx @@ -1,9 +1,9 @@ import { mount } from '@vue/test-utils'; +import { mockDelay } from '@test/utils'; +import { afterEach } from 'vitest'; import { Table, BaseTable, PrimaryTable, EnhancedTable, } from '@/src/table/index.ts'; -import { mockDelay } from '@test/utils'; -import { afterEach } from 'vitest'; // 4 类表格组件同时测试 const TABLES = [Table, BaseTable, PrimaryTable, EnhancedTable]; @@ -24,7 +24,7 @@ const SIMPLE_COLUMNS = [ { title: 'Instance', colKey: 'instance' }, ]; -function getTableMount() { +function getTableMount(TTable) { return mount({ data() { return { @@ -42,7 +42,7 @@ function getTableMount() { }, goToNextPage() { const { current, total, pageSize } = this.pagination; - this.pagination.current = Math.min(current + 1, Math.ceil(total / pageSize) ); + this.pagination.current = Math.min(current + 1, Math.ceil(total / pageSize)); }, onPaginationChange(pageInfo) { this.pagination.current = pageInfo.current; @@ -53,8 +53,12 @@ function getTableMount() { render() { return (
- - + + { }); it('controlled mode', async () => { - const wrapper = getTableMount(); + const wrapper = getTableMount(TTable); const firstSerialNumberClass = '.t-table tbody tr td:first-child'; expect(wrapper.find('.t-table__pagination').exists()).toBeTruthy();