feat: 在 trigger-version GitHub Action 中添加 use-latest-version 输入参数,支持在非版本触发时使用当前分支最新的版本标签,同时更新版本号输出格式,新增横线格式版本号的生成,更新文档以反映新功能和使用示例。

This commit is contained in:
Lyda
2025-08-21 11:05:24 +08:00
parent 8c5ff61828
commit 52eb45b66f
4 changed files with 82 additions and 11 deletions

View File

@@ -7,6 +7,10 @@ inputs:
description: '版本前缀用于匹配版本标签或分支默认v'
required: false
default: 'v'
use-latest-version:
description: '在非版本触发时是否使用当前分支最新的版本标签默认false'
required: false
default: 'false'
outputs:
ref-type:
@@ -19,7 +23,7 @@ outputs:
description: '是否为版本触发true/false'
value: ${{ steps.get-version-info.outputs.is_version_trigger }}
trigger-version:
description: '触发的版本号(去除前缀后的版本'
description: '触发的版本号(标准化为v开头的格式'
value: ${{ steps.get-version-info.outputs.trigger_version }}
trigger-source:
description: '触发源tag/branch'
@@ -27,6 +31,9 @@ outputs:
full-ref:
description: '完整的 Git 引用'
value: ${{ steps.get-version-info.outputs.full_ref }}
version-with-dash:
description: '版本号点替换为横线例如v1.2.3 -> v1-2-3'
value: ${{ steps.get-version-info.outputs.version_with_dash }}
runs:
using: 'composite'
@@ -45,37 +52,81 @@ runs:
REF_NAME="${{ github.ref_name }}"
FULL_REF="${{ github.ref }}"
VERSION_PREFIX="${{ inputs.version-prefix }}"
USE_LATEST_VERSION="${{ inputs.use-latest-version }}"
# 判断是否为标签触发
if [[ "$REF_TYPE" == "tag" ]]; then
# 从标签名提取版本号 (v1.2.3 -> 1.2.3)
# 标准化版本号为v开头格式
if [[ "$REF_NAME" == ${VERSION_PREFIX}* ]]; then
TRIGGER_VERSION=${REF_NAME#${VERSION_PREFIX}}
else
TRIGGER_VERSION=$REF_NAME
else
TRIGGER_VERSION=${VERSION_PREFIX}$REF_NAME
fi
# 生成带横线的版本号
VERSION_WITH_DASH=$(echo "$TRIGGER_VERSION" | sed 's/\./-/g')
echo "🏷️ 标签触发: $REF_NAME"
echo "版本号: $TRIGGER_VERSION"
echo "标准化版本号: $TRIGGER_VERSION"
echo "横线版本号: $VERSION_WITH_DASH"
IS_VERSION_TRIGGER=true
TRIGGER_SOURCE=tag
elif [[ "$REF_TYPE" == "branch" && "$REF_NAME" == ${VERSION_PREFIX}* ]]; then
# 版本分支触发
TRIGGER_VERSION=${REF_NAME#${VERSION_PREFIX}}
TRIGGER_VERSION=$REF_NAME
# 生成带横线的版本号
VERSION_WITH_DASH=$(echo "$TRIGGER_VERSION" | sed 's/\./-/g')
echo "🔄 版本分支触发: $REF_NAME"
echo "版本号: $TRIGGER_VERSION"
echo "标准化版本号: $TRIGGER_VERSION"
echo "横线版本号: $VERSION_WITH_DASH"
IS_VERSION_TRIGGER=true
TRIGGER_SOURCE=branch
else
# 常规分支触发
echo "🆕 常规分支触发: $REF_NAME"
IS_VERSION_TRIGGER=false
TRIGGER_VERSION=""
if [[ "$USE_LATEST_VERSION" == "true" ]]; then
# 获取当前分支最新的版本标签
echo "🔍 查找最新版本标签..."
# 检查git仓库是否可用
if git rev-parse --git-dir > /dev/null 2>&1; then
LATEST_TAG=$(git tag --list "${VERSION_PREFIX}*" --sort=-version:refname 2>/dev/null | head -1)
if [[ -n "$LATEST_TAG" ]]; then
# 找到了版本标签,使用它
TRIGGER_VERSION=$LATEST_TAG
VERSION_WITH_DASH=$(echo "$TRIGGER_VERSION" | sed 's/\./-/g')
echo "📦 使用最新版本标签: $LATEST_TAG"
echo "标准化版本号: $TRIGGER_VERSION"
echo "横线版本号: $VERSION_WITH_DASH"
IS_VERSION_TRIGGER=true
else
# 没有找到版本标签
echo "⚠️ 未找到版本标签,使用空版本"
IS_VERSION_TRIGGER=false
TRIGGER_VERSION=""
VERSION_WITH_DASH=""
fi
else
# Git仓库不可用
echo "⚠️ Git仓库不可用使用空版本"
IS_VERSION_TRIGGER=false
TRIGGER_VERSION=""
VERSION_WITH_DASH=""
fi
else
# 不使用最新版本
IS_VERSION_TRIGGER=false
TRIGGER_VERSION=""
VERSION_WITH_DASH=""
fi
TRIGGER_SOURCE=branch
fi
# 设置环境变量
echo "IS_VERSION_TRIGGER=$IS_VERSION_TRIGGER" >> $GITHUB_ENV
echo "TRIGGER_VERSION=$TRIGGER_VERSION" >> $GITHUB_ENV
echo "VERSION_WITH_DASH=$VERSION_WITH_DASH" >> $GITHUB_ENV
echo "TRIGGER_SOURCE=$TRIGGER_SOURCE" >> $GITHUB_ENV
# 输出到 step outputs
@@ -84,6 +135,7 @@ runs:
echo "full_ref=$FULL_REF" >> $GITHUB_OUTPUT
echo "is_version_trigger=$IS_VERSION_TRIGGER" >> $GITHUB_OUTPUT
echo "trigger_version=$TRIGGER_VERSION" >> $GITHUB_OUTPUT
echo "version_with_dash=$VERSION_WITH_DASH" >> $GITHUB_OUTPUT
echo "trigger_source=$TRIGGER_SOURCE" >> $GITHUB_OUTPUT
branding: