跳到主要内容

版本发布日志集成

只需要提交代码,更新版本号,相关的发布日志CHANGELOG、GitHub Release、发布说明会自动生成

  • 如更新一个次版本号,在github的release版本信息中,能看到当前版本更新的commit列出来,以及集成changelog发版本日志记录,统计当前版本所提交的commit
  • 可以通过github action来自动化完成
  • 根据提交记录生成CHANGELOG.md
  • 触发commit和发布版本号之后,触发了github action,github action识别到版本更新之后,会更新CHANGELOG.md和发布说明集成在release中看到
  • 需要将当前版本的提交记录集成在GitHub Release 页面正文
  • 提交版本号时commit信息可以为:bump version to 来语义化

实现原理​

  • CHANGELOG.md:提交到仓库,作为长期版本日志
  • RELEASE_NOTES.md
    • 临时生成,专门写入 GitHub Release Body正文内容
  • 内容写入 GitHub Release 正文 Body, GitHub CLI 写入 Release 正文
bash
# 编辑某个 GitHub Release,并把 RELEASE_NOTES.md 文件里的内容,作为 Release 正文。
gh release edit "$TAG" --notes-file RELEASE_NOTES.md

使用 semantic-release​

  • semantic-release 是一个自动化发版工具。
  • 根据 Git commit 自动判断版本号,自动生成 Release Notes,自动创建 Git Tag,自动生成GitHub Release 、自动生成CHANGELOG
  • 使用semantic-release来完成,如版本号、CHANGELOG.md、GitHub Release Body 都由这个库自动生成
  • 通过GitHub Actions 跑 semantic-release自动化,当提交commit就会自动化执行生成
    • semantic-release会判断commit是否符合发版本的规则,才会自动生成版本,比如commt类型为docs只是修改文档,不会触发发布
  • 使用 semantic-release 时,不需要手动 bump version
    • 不需要自己手动修改版本号提交,交给semantic-release 来完成
  • 提交commit,push推送之后,就会触发github action跑semantic-release ,来生成changelog、Release 、自动生成版本号
  • 通过semantic-release 发布之后,会出现semantic-release-bot
    • semantic-release 自动发布时使用的机器人账号