mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-25 04:59:01 +08:00
chore(workflow): 优化自动标签和发布工作流配置
- 调整 auto-tag 工作流触发条件,仅在 push 事件时执行 - 添加并发控制组配置避免重复执行 - 优化标签版本获取逻辑,使用 git tag 命令替代 describe - 修复版本号解析方式,使用 IFS 分割替代 cut 命令 - 添加标签存在性检查,避免重复创建相同标签 - 为 publish 工作流添加详细功能注释和说明 - 优化 NuGet 包推送步骤的描述信息 - 改进 GitHub Release 创建和资产上传的注释说明
This commit is contained in:
parent
f7542cbc98
commit
3b8671d22d
29
.github/workflows/auto-tag.yml
vendored
29
.github/workflows/auto-tag.yml
vendored
@ -6,16 +6,17 @@ name: Auto Increment Version and Tag
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ main, master ]
|
branches: [ main, master ]
|
||||||
pull_request:
|
tags-ignore:
|
||||||
branches: [ main, master ]
|
- '*'
|
||||||
types: [ closed ]
|
concurrency:
|
||||||
|
group: auto-tag-main
|
||||||
|
cancel-in-progress: false
|
||||||
jobs:
|
jobs:
|
||||||
auto-tag:
|
auto-tag:
|
||||||
name: Auto Increment Version and Create Tag
|
name: Auto Increment Version and Create Tag
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# 条件判断:仅在推送事件或已合并的 PR 关闭事件中执行
|
# 条件判断:仅在推送事件或已合并的 PR 关闭事件中执行
|
||||||
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true)
|
if: github.event_name == 'push'
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
@ -68,16 +69,14 @@ jobs:
|
|||||||
if: steps.check_skip.outputs.skip_tag == 'false'
|
if: steps.check_skip.outputs.skip_tag == 'false'
|
||||||
run: |
|
run: |
|
||||||
# 获取最新的标签版本号,如果没有标签则默认为 0.0.0
|
# 获取最新的标签版本号,如果没有标签则默认为 0.0.0
|
||||||
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
|
LATEST_TAG=$(git tag --list "v*" --sort=-v:refname | head -n 1)
|
||||||
|
LATEST_TAG=${LATEST_TAG:-v0.0.0}
|
||||||
# 移除可能存在的 v 前缀
|
# 移除可能存在的 v 前缀
|
||||||
VERSION_NUM=${LATEST_TAG#v}
|
VERSION_NUM=${LATEST_TAG#v}
|
||||||
|
|
||||||
# 解析主版本号、次版本号和修订号
|
# 解析主版本号、次版本号和修订号
|
||||||
MAJOR=$(echo $VERSION_NUM | cut -d. -f1)
|
IFS=. read MAJOR MINOR PATCH <<< "$VERSION_NUM"
|
||||||
MINOR=$(echo $VERSION_NUM | cut -d. -f2)
|
unset IFS
|
||||||
PATCH=$(echo $VERSION_NUM | cut -d. -f3)
|
|
||||||
|
|
||||||
# 递增修订号
|
# 递增修订号
|
||||||
PATCH=$((PATCH + 1))
|
PATCH=$((PATCH + 1))
|
||||||
|
|
||||||
@ -105,7 +104,10 @@ jobs:
|
|||||||
set -e
|
set -e
|
||||||
git config --local user.email "action@github.com"
|
git config --local user.email "action@github.com"
|
||||||
git config --local user.name "GitHub Action"
|
git config --local user.name "GitHub Action"
|
||||||
|
if git show-ref --tags --verify --quiet "refs/tags/$NEW_TAG"; then
|
||||||
|
echo "Tag $NEW_TAG already exists, skipping"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
echo "Creating annotated tag $NEW_TAG"
|
echo "Creating annotated tag $NEW_TAG"
|
||||||
git tag -a "$NEW_TAG" -m "Auto-generated tag: $NEW_TAG"
|
git tag -a "$NEW_TAG" -m "Auto-generated tag: $NEW_TAG"
|
||||||
|
|
||||||
@ -126,3 +128,4 @@ jobs:
|
|||||||
if: steps.check_skip.outputs.skip_tag == 'true'
|
if: steps.check_skip.outputs.skip_tag == 'true'
|
||||||
run: |
|
run: |
|
||||||
echo "Tag creation skipped due to commit message containing skip keyword"
|
echo "Tag creation skipped due to commit message containing skip keyword"
|
||||||
|
|
||||||
|
|||||||
24
.github/workflows/publish.yml
vendored
24
.github/workflows/publish.yml
vendored
@ -1,3 +1,8 @@
|
|||||||
|
# 发布工作流(NuGet + GitHub Release)
|
||||||
|
#
|
||||||
|
# 功能:当推送标签时自动构建、打包并发布到 NuGet.org 和 GitHub Release
|
||||||
|
# 触发条件:推送任何标签(如 v1.0.0 或 1.0.0)
|
||||||
|
# 权限:允许写入内容、包和使用 OIDC 身份验证
|
||||||
name: Publish (NuGet + GitHub Release)
|
name: Publish (NuGet + GitHub Release)
|
||||||
|
|
||||||
# 触发:推送 tag 时触发(例如 v1.0.0 或 1.0.0)
|
# 触发:推送 tag 时触发(例如 v1.0.0 或 1.0.0)
|
||||||
@ -43,6 +48,9 @@ jobs:
|
|||||||
- name: Restore dependencies
|
- name: Restore dependencies
|
||||||
run: dotnet restore
|
run: dotnet restore
|
||||||
|
|
||||||
|
# 从 GitHub 引用中提取标签版本
|
||||||
|
# 提取逻辑:去除 refs/tags/ 前缀,然后去除 v/V 前缀
|
||||||
|
# 输出:version - 处理后的版本号
|
||||||
- name: Determine tag version
|
- name: Determine tag version
|
||||||
id: tag_version
|
id: tag_version
|
||||||
run: |
|
run: |
|
||||||
@ -69,6 +77,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
user: ${{ secrets.NUGET_USER }} # 推荐将用户名放 secrets
|
user: ${{ secrets.NUGET_USER }} # 推荐将用户名放 secrets
|
||||||
|
|
||||||
|
# 将所有生成的包推送到 nuget.org
|
||||||
|
# 使用临时 API 密钥进行身份验证
|
||||||
|
# 跳过重复包的上传
|
||||||
- name: Push all packages to nuget.org
|
- name: Push all packages to nuget.org
|
||||||
env:
|
env:
|
||||||
NUGET_API_KEY: ${{ steps.nuget_login.outputs.NUGET_API_KEY }}
|
NUGET_API_KEY: ${{ steps.nuget_login.outputs.NUGET_API_KEY }}
|
||||||
@ -89,6 +100,12 @@ jobs:
|
|||||||
echo "No packages found to push."
|
echo "No packages found to push."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 从 .nupkg 文件中提取版本信息
|
||||||
|
# 通过解压 .nupkg(zip 格式)并读取 .nuspec 文件来获取版本
|
||||||
|
# 输出:
|
||||||
|
# package_file - 第一个找到的包文件路径
|
||||||
|
# package_basename - 包文件的基本名称
|
||||||
|
# version - 从 nuspec 中解析出的版本号
|
||||||
- name: Get Version and First Package Path
|
- name: Get Version and First Package Path
|
||||||
id: get_version
|
id: get_version
|
||||||
run: |
|
run: |
|
||||||
@ -109,6 +126,9 @@ jobs:
|
|||||||
echo "package_basename=$BASENAME" >> $GITHUB_OUTPUT
|
echo "package_basename=$BASENAME" >> $GITHUB_OUTPUT
|
||||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
# 创建 GitHub Release
|
||||||
|
# 使用从包中提取的版本信息和当前标签创建发布
|
||||||
|
# 发布包含描述信息和版本详情
|
||||||
- name: Create GitHub Release
|
- name: Create GitHub Release
|
||||||
id: create_release
|
id: create_release
|
||||||
uses: actions/create-release@v1
|
uses: actions/create-release@v1
|
||||||
@ -121,6 +141,9 @@ jobs:
|
|||||||
draft: false
|
draft: false
|
||||||
prerelease: false
|
prerelease: false
|
||||||
|
|
||||||
|
# 使用 curl 将所有 .nupkg 文件上传到 GitHub Release
|
||||||
|
# 从 create-release 步骤获取上传 URL 并移除模板部分
|
||||||
|
# 每个包文件作为资产上传到发布中
|
||||||
- name: Upload all .nupkg to Release (curl)
|
- name: Upload all .nupkg to Release (curl)
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@ -144,3 +167,4 @@ jobs:
|
|||||||
echo "Uploaded $basename"
|
echo "Uploaded $basename"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user