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 Proposal Checker

  • 目的:检测 Release Propsal 是否正确。
  • 检测项:
    • 必须包含 History 修改,ChangeLog 的 Title 包含正确的版本
    • 必须修改 Package.json,且这个版本号是正确的。
      • 通过 versionpublicConfig.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 中 (之前好像这个触发有问题,要验证)

流程图

Egg release action - 图1