如何基于appsettings.json的VersionNumber自动生成GitHub Release
基于appsettings.json版本号创建Git标签与GitHub Release方案
实现思路
无需依赖第三方Changelog驱动的工具,直接通过GitHub官方能力提取版本号、创建标签,并利用GitHub原生的发布说明生成功能完成需求。
具体Workflow配置
在仓库的.github/workflows/目录下创建auto-release.yml文件,内容如下:
name: 自动生成标签与Release on: push: branches: [ main ] paths: [ 'appsettings.json' ] # 仅当版本配置文件更新时触发流程 jobs: release: runs-on: ubuntu-latest steps: - name: 拉取仓库代码 uses: actions/checkout@v4 with: fetch-depth: 0 # 拉取完整历史以支持标签操作 - name: 从appsettings.json提取版本号 id: get-version run: | # 用jq解析JSON文件,提取VersionNumber字段 VERSION=$(jq -r '.Version.VersionNumber' appsettings.json) # 将版本号存入环境变量供后续步骤调用 echo "VERSION=$VERSION" >> $GITHUB_ENV - name: 创建并推送Git标签 run: | # 配置Git提交身份 git config --global user.name "GitHub Actions Bot" git config --global user.email "actions-bot@github.com" # 创建标签(可根据需求去掉v前缀) git tag v${{ env.VERSION }} # 推送标签到远程仓库 git push origin v${{ env.VERSION }} - name: 生成GitHub Release(含自动发布说明) uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GitHub自动注入的仓库权限Token with: tag_name: v${{ env.VERSION }} release_name: 正式版本 v${{ env.VERSION }} generate_release_notes: true # 开启GitHub自动生成发布说明(基于合并的Pull Request) draft: false # 是否设为草稿版本 prerelease: false # 是否设为预发布版本
关键细节说明
- 触发逻辑:仅当
main分支下的appsettings.json被修改推送时执行,确保只有手动更新版本号后才触发流程。 - 版本号提取:使用
jq工具解析JSON文件,GitHub托管的Runner默认预装该工具,无需额外安装依赖。 - 自动发布说明:通过
generate_release_notes: true参数,让GitHub自动基于合并到当前分支的Pull Request生成发布说明,无需手动维护Changelog文件。 - 标签格式:示例中使用
v+版本号的命名格式,若不需要前缀,可将所有v${{ env.VERSION }}改为${{ env.VERSION }}。
内容的提问来源于stack exchange,提问作者muttley91
相关产品推荐
相关产品推荐

