improve:pre-release

This commit is contained in:
2025-12-21 00:36:17 +08:00
parent b0bfc8d5ed
commit 8c741c1fb7
+24 -17
View File
@@ -46,11 +46,10 @@ jobs:
- name: Get current version from Git tag - name: Get current version from Git tag
id: get_version id: get_version
run: | run: |
# 获取最新的tag # 获取最新的tagtag就是版本号,不带前缀)
$latestTag = git describe --tags --abbrev=0 2>$null $latestTag = git describe --tags --abbrev=0 2>$null
if ($latestTag) { if ($latestTag) {
# 移除v/b前缀 $version = $latestTag
$version = $latestTag -replace "^[vb]", ""
echo "Found latest tag: $latestTag" echo "Found latest tag: $latestTag"
} else { } else {
# 如果没有tag,使用默认值 # 如果没有tag,使用默认值
@@ -65,10 +64,9 @@ jobs:
id: get_tag id: get_tag
run: | run: |
if ("${{ github.event_name }}" -eq "push") { if ("${{ github.event_name }}" -eq "push") {
# 从 push tag 事件获取原始标签名 # 从 push tag 事件获取原始标签名tag就是版本号,不带前缀)
$tagName = "${{ github.ref }}".Replace("refs/tags/", "") $tagName = "${{ github.ref }}".Replace("refs/tags/", "")
# 移除 v/b 前缀获取纯版本号 $cleanVersion = $tagName
$cleanVersion = $tagName -replace "^[vb]", ""
echo "tag_name=$tagName" >> $env:GITHUB_OUTPUT echo "tag_name=$tagName" >> $env:GITHUB_OUTPUT
echo "version=$cleanVersion" >> $env:GITHUB_OUTPUT echo "version=$cleanVersion" >> $env:GITHUB_OUTPUT
@@ -125,12 +123,13 @@ jobs:
# 生成新版本号(4位格式,如1.7.18.0) # 生成新版本号(4位格式,如1.7.18.0)
$newVersion = "$major.$minor.$patch.$build" $newVersion = "$major.$minor.$patch.$build"
# 根据是否为预发布决定标签前缀 # 根据是否为预发布决定版本号最后一位
if ($isPrerelease) { # 如果是预发布,确保最后一位不为0(使用1)
$tagName = "b$newVersion" if ($isPrerelease -and $build -eq 0) {
} else { $build = 1
$tagName = "v$newVersion" $newVersion = "$major.$minor.$patch.$build"
} }
$tagName = $newVersion
echo "tag_name=$tagName" >> $env:GITHUB_OUTPUT echo "tag_name=$tagName" >> $env:GITHUB_OUTPUT
echo "version=$newVersion" >> $env:GITHUB_OUTPUT echo "version=$newVersion" >> $env:GITHUB_OUTPUT
@@ -141,14 +140,22 @@ jobs:
id: release_type id: release_type
run: | run: |
if ("${{ github.event_name }}" -eq "push") { if ("${{ github.event_name }}" -eq "push") {
# 根据 tag 名称前缀确定是否为预发布版本 # 根据版本号最后一位确定是否为预发布版本
$tagName = "${{ steps.get_tag.outputs.tag_name }}" # 最后一位为0表示正式版本,非0表示预发布版本
if ($tagName -and $tagName.StartsWith("b")) { $version = "${{ steps.get_tag.outputs.version }}"
echo "is_prerelease=true" >> $env:GITHUB_OUTPUT $versionParts = $version.Split('.')
echo "This is a pre-release (beta)" if ($versionParts.Length -ge 4) {
$build = [int]$versionParts[3]
if ($build -eq 0) {
echo "is_prerelease=false" >> $env:GITHUB_OUTPUT
echo "This is a release"
} else {
echo "is_prerelease=true" >> $env:GITHUB_OUTPUT
echo "This is a pre-release (beta)"
}
} else { } else {
echo "is_prerelease=false" >> $env:GITHUB_OUTPUT echo "is_prerelease=false" >> $env:GITHUB_OUTPUT
echo "This is a release" echo "This is a release (invalid version format)"
} }
} else { } else {
# workflow_dispatch 方式 # workflow_dispatch 方式