Egg 发布流程
- 一般的插件和类库:直接本地
git-extra
->changelog
->release
。 - Egg 主库:
- 提交 Release Propsal (需自动化检测)
- History.md
- 修改 package.json 版本号
- 设置 label: major/minor/patch
- Review
- 合并
- 本地发版本(需自动化)
- 设置 Git Tag,push
- npm publish
- 更新 GitHub 的 Release
- 提交 Release Propsal (需自动化检测)
改造思路
- 自动化流程通过 GitHub Action 来做。
- 其中:
- Action 可以用 actions-toolkit 这个库来写。
- Git 相关操作可以用 rest.js ,已经集成到上面那个库了。
- History.md 的分析可以用 git-changelog-parser 。
自动化改造 - 一般类库
待补,也需要,但优先级不高。
自动化改造 - 主库
Release Proposal Checker
- 目的:检测 Release Propsal 是否正确。
- 检测项:
- 必须包含 History 修改,ChangeLog 的 Title 包含正确的版本
- 必须修改 Package.json,且这个版本号是正确的。
- 通过
version
和publicConfig.dist-tag
,去查询对应的 npm 信息 - 如果符合 Semver,则代表正确。
- 通过
- 自动根据版本号,对这个 PR 打一个 label: semver:major / …
- 合并后,自动删除该 Branch
- 触发时机:
- pull request 事件,要判断具体的类型,如下面的只有其中几个需要处理
assigned
,unassigned
,labeled
,unlabeled
,opened
,edited
,closed
,reopened
,synchronize
Release Action
- 目的:自动完成上面的『本地发版本』
- Action:
- 检测目标版本是否已经存在
- 切换到 master 分支
- 设置 Git Tag,并 push
- 执行 npm publish
- 读取 History.md,更新 GitHub 的 Release
- 触发时机:
- master 有 push,且是一个 Release Proposal 的 push
- 或者是直接在上一步,state: closed + merged: true 中 (之前好像这个触发有问题,要验证)