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

如何通过GitHub Action获取项目最新Release并生成下一版本号?

自动获取并递增GitHub Release版本号的实现方案

方法一:通过Shell脚本手动处理版本号

直接调用GitHub API获取仓库的最新Release标签,解析后递增补丁版本号,再传递给发布步骤:

修改后的完整GitHub Action配置如下:

on:
  push:

name: Build  
jobs:
  build-android:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0 # 确保能获取所有标签数据

      - name: 获取并递增最新版本号
        id: bump_version
        run: |
          # 获取最新的Release标签,无Release则默认v0.0.0
          LATEST_TAG=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r '.tag_name // "v0.0.0"')
          echo "当前最新版本: $LATEST_TAG"
          
          # 拆分语义化版本号为三个部分
          IFS='.' read -r MAJOR MINOR PATCH <<< "${LATEST_TAG#v}"
          # 递增补丁号
          NEW_PATCH=$((PATCH + 1))
          NEW_TAG="v$MAJOR.$MINOR.$NEW_PATCH"
          
          echo "新版本号: $NEW_TAG"
          echo "tag=$NEW_TAG" >> $GITHUB_OUTPUT

      - name: Install npm dependencies
        run: npm install

      - name: Build Android Release
        run: cd android && ./gradlew assembleRelease

      - name: Upload Artifact
        uses: actions/upload-artifact@v3
        with:
          name: app-release.apk
          path: android/app/build/outputs/apk/release/

      - name: Create Github Release
        uses: ncipollo/release-action@v1
        with:
          artifacts: "android/app/build/outputs/apk/release/app-release.apk"
          tag: ${{ steps.bump_version.outputs.tag }}
          replacesArtifacts: false
          token: ${{ secrets.GITHUB_TOKEN }}
          allowUpdates: true

关键说明:

  • fetch-depth: 0:确保checkout时拉取完整仓库历史,避免本地无标签的情况
  • 结合jq工具解析GitHub API返回的最新标签,兼容仓库无Release的初始状态
  • 如需递增主版本或次版本,修改MAJOR或MINOR的递增逻辑即可

方法二:使用现成的GitHub Action简化流程

利用专门处理版本号的Action自动完成获取最新标签、递增版本的操作,代码更简洁:

on:
  push:

name: Build  
jobs:
  build-android:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: 获取最新语义化版本标签
        id: get_latest_tag
        uses: actions-ecosystem/action-get-latest-tag@v1
        with:
          semver_only: true # 仅识别符合语义化规范的标签
          default_tag: v0.0.0 # 无Release时的默认版本

      - name: 递增补丁版本号
        id: bump_version
        uses: actions-ecosystem/action-bump-version@v1
        with:
          current_version: ${{ steps.get_latest_tag.outputs.tag }}
          version_bump: patch # 可选值:major/minor/patch,按需切换

      - name: Install npm dependencies
        run: npm install

      - name: Build Android Release
        run: cd android && ./gradlew assembleRelease

      - name: Upload Artifact
        uses: actions/upload-artifact@v3
        with:
          name: app-release.apk
          path: android/app/build/outputs/apk/release/

      - name: Create Github Release
        uses: ncipollo/release-action@v1
        with:
          artifacts: "android/app/build/outputs/apk/release/app-release.apk"
          tag: ${{ steps.bump_version.outputs.new_version }}
          replacesArtifacts: false
          token: ${{ secrets.GITHUB_TOKEN }}
          allowUpdates: true

关键说明:

  • actions-ecosystem/action-get-latest-tag:自动筛选仓库中最新的合规语义化版本标签
  • actions-ecosystem/action-bump-version:根据指定类型自动递增版本号,无需手动拆分解析版本

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:55:31