如何通过Github Actions自动生成发布说明并创建版本?求替代方案
自动生成发布说明并创建GitHub版本的替代方案
方案一:用GitHub官方CLI(gh)实现
GitHub官方的gh工具是替代过时actions/create-release的首选,它原生支持生成发布说明并创建版本,稳定性和兼容性有保障。
工作流示例
- name: 生成发布说明 id: gen_notes run: | # 基于最新标签自动生成差异说明,结果存入文件 gh release notes --latest --notes-file release-notes.md # 把说明内容存入环境变量,方便后续步骤调用 echo "notes=$(cat release-notes.md)" >> $GITHUB_ENV - name: 创建版本并附加说明 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release create ${{ env.ver }} \ --title "${{ env.ver }}" \ --notes-file release-notes.md \ --draft=false \ --prerelease=false
默认的gh release notes会基于标签间的commit和PR自动整理说明,也可以通过添加参数自定义规则,比如只包含指定标签的变更。
方案二:使用活跃维护的社区Action
推荐使用softprops/action-gh-release,这是目前社区广泛使用的替代方案,集成了发布说明自动生成功能,配置简单:
工作流示例
- name: 创建带自动说明的版本 uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.ver }} name: ${{ env.ver }} draft: false prerelease: false # 开启自动生成发布说明,默认基于commit和PR整理 generate_release_notes: true # 若需要自定义说明,可指定本地文件路径 # body_path: ./custom-release-notes.md
自定义发布说明的进阶玩法
如果需要更个性化的说明格式,可以手动生成:
- 用
git log筛选指定范围的commit,格式化输出:
- name: 自定义生成发布说明 run: | # 获取上一个标签到当前HEAD的所有commit,按标题格式化 git log $(git describe --abbrev=0 --tags)..HEAD --format="- %s" > release-notes.md
- 结合Conventional Commits规范,用工具自动生成结构化的变更日志(如按功能、修复、文档分类)
内容的提问来源于stack exchange,提问作者gamechanger17
相关产品推荐
相关产品推荐

