如何在GitHub Actions中实现连续递增的自定义版本号发布?
如何用GitHub Actions发布带连续递增自定义版本号的Release?
目前使用GitHub Context的github.run_number作为Release版本号,但由于Workflow运行失败等情况不会生成Release,导致版本号出现断档(比如...38,39,40,47,49这类不连续的情况)。需要实现连续递增的版本号,且最好支持v.x.x的语义化格式。
方法一:基于现有Release标签自动递增版本号
这种方法通过查询仓库已有的Release标签,解析出最新版本号后自动递增,确保版本号连续。可以借助第三方Action简化操作:
修改后的Workflow片段
release-project: name: Release project needs: deploy-project runs-on: ubuntu-latest steps: # 省略打包等前置步骤 - name: 获取最新Release标签 id: get-latest-tag uses: actions-ecosystem/action-get-latest-tag@v1 with: semver_only: true # 仅识别v1.0.0这类语义化版本标签 - name: 递增修订版本号 id: bump-version uses: actions-ecosystem/action-bump-semver@v1 with: current_version: ${{ steps.get-latest-tag.outputs.tag }} level: patch # 可选值:major/minor/patch,对应主版本/次版本/修订号递增 - name: 创建Release id: create_release_id uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.bump-version.outputs.new_version }} release_name: Release ${{ steps.bump-version.outputs.new_version }} - name: 上传Release资源 id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release_id.outputs.upload_url }} asset_path: ./project.zip asset_name: project-${{ steps.bump-version.outputs.new_version }}.zip asset_content_type: application/zip
说明
- 若仓库无历史Release,需手动创建第一个语义化版本标签(如
v1.0.0)作为初始版本 - 通过
level参数可灵活控制版本递增层级,例如迭代功能时可设置为minor
方法二:通过仓库文件维护版本号
在仓库根目录创建VERSION文件,直接存储当前版本号(如v1.0.0),每次发布时读取该文件、递增版本号后写回仓库,同时用新版本号创建Release,可控性更强。
修改后的Workflow片段
release-project: name: Release project needs: deploy-project runs-on: ubuntu-latest steps: # 省略打包等前置步骤 - name: 读取当前版本号 id: read-version run: echo "current_version=$(cat VERSION)" >> $GITHUB_OUTPUT - name: 递增修订版本号 id: bump-version uses: actions-ecosystem/action-bump-semver@v1 with: current_version: ${{ steps.read-version.outputs.current_version }} level: patch - name: 更新VERSION文件 run: echo ${{ steps.bump-version.outputs.new_version }} > VERSION - name: 提交版本号更新 uses: EndBug/add-and-commit@v9 with: message: "Bump version to ${{ steps.bump-version.outputs.new_version }}" add: VERSION - name: 创建Release id: create_release_id uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.bump-version.outputs.new_version }} release_name: Release ${{ steps.bump-version.outputs.new_version }} - name: 上传Release资源 id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release_id.outputs.upload_url }} asset_path: ./project.zip asset_name: project-${{ steps.bump-version.outputs.new_version }}.zip asset_content_type: application/zip
说明
- 初始需手动在仓库根目录创建
VERSION文件并写入第一个版本号 - 默认
GITHUB_TOKEN具备仓库读写权限,无需额外配置
内容的提问来源于stack exchange,提问作者Benny
相关产品推荐
相关产品推荐

