mirror of
https://git.bjxgj.com/xgj/xgj-actions.git
synced 2025-10-14 19:33:36 +08:00
feat: 在 trigger-version GitHub Action 中添加 use-latest-version 输入参数,支持在非版本触发时使用当前分支最新的版本标签,同时更新版本号输出格式,新增横线格式版本号的生成,更新文档以反映新功能和使用示例。
This commit is contained in:
@@ -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:
|
||||
|
Reference in New Issue
Block a user