Github动作知道一个项目最新发布的名称

问题描述 投票:0回答:1

有没有办法知道某个项目的最新版本?

比如某个项目的最新版本是

v0.0.12
,我必须让它变成
v0.0.13
,以便在有变化时能够发布新版本。

这是我用于发布的代码:

on:
  push:

name: Build  
jobs:
  build-android:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v3
      - 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: v0.0.0
          replacesArtifacts: false
          token: ${{ secrets.GITHUB_TOKEN }}
          allowUpdates: true

它说的

tag: v0.0.0
我必须输入下一个版本的名称。

你能帮我一下吗?

github build yaml github-actions release
1个回答
0
投票

Git解决方案(可以在

run
步骤中使用,可能需要非浅结帐):

git tag --list --sort='-version:refname' 'v*' | head -n1

或 GitHub CLI 方法,也用于

run
步骤:

gh release view --json tagName --jq '.tagName'

这两个都返回最新版本。要增加它,分配给一个变量,按周期拆分,并增加所需的级别(补丁,在你的情况下):

tag=$(gh release view --json tagName --jq '.tagName')
IFS=. read -r major minor patch
newtag=$major.$minor.$((++patch))

这可以设置为输出并用于其他步骤:

      - name: Set new tag
        id: newtag
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          tag=$(gh release view --json tagName --jq '.tagName')
          IFS=. read -r major minor patch
          echo "newtag=$major.$minor.$((++patch))" >> "$GITHUB_OUTPUT"

      - name: Create Github Release
        uses: ncipollo/release-action@v1
        with:
          artifacts: "android/app/build/outputs/apk/release/app-release.apk"
          tag: ${{ steps.newtag.outputs.newtag }}
          replacesArtifacts: false
          token: ${{ secrets.GITHUB_TOKEN }}
          allowUpdates: true
© www.soinside.com 2019 - 2024. All rights reserved.