有没有办法知道某个项目的最新版本?
比如某个项目的最新版本是
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
我必须输入下一个版本的名称。
你能帮我一下吗?
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