You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:10:25