Files
xgj/trigger-version/action.yml

144 lines
5.5 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: 'Trigger Version Info'
description: '获取触发版本信息,支持标签触发、版本分支触发和常规分支触发'
author: 'Your Organization'
inputs:
version-prefix:
description: '版本前缀用于匹配版本标签或分支默认v'
required: false
default: 'v'
use-latest-version:
description: '在非版本触发时是否使用当前分支最新的版本标签默认false'
required: false
default: 'false'
outputs:
ref-type:
description: '引用类型 (tag/branch)'
value: ${{ steps.get-version-info.outputs.ref_type }}
ref-name:
description: '引用名称'
value: ${{ steps.get-version-info.outputs.ref_name }}
is-version-trigger:
description: '是否为版本触发true/false'
value: ${{ steps.get-version-info.outputs.is_version_trigger }}
trigger-version:
description: '触发的版本号标准化为v开头的格式'
value: ${{ steps.get-version-info.outputs.trigger_version }}
trigger-source:
description: '触发源tag/branch'
value: ${{ steps.get-version-info.outputs.trigger_source }}
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'
steps:
- name: 获取触发版本信息
id: get-version-info
shell: bash
run: |
# 获取GitHub上下文信息
echo "触发方式: ${{ github.event_name }}"
echo "引用类型: ${{ github.ref_type }}"
echo "引用名称: ${{ github.ref_name }}"
echo "完整引用: ${{ github.ref }}"
REF_TYPE="${{ github.ref_type }}"
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
# 标准化版本号为v开头格式
if [[ "$REF_NAME" == ${VERSION_PREFIX}* ]]; then
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 "横线版本号: $VERSION_WITH_DASH"
IS_VERSION_TRIGGER=true
TRIGGER_SOURCE=tag
elif [[ "$REF_TYPE" == "branch" && "$REF_NAME" == ${VERSION_PREFIX}* ]]; then
# 版本分支触发
TRIGGER_VERSION=$REF_NAME
# 生成带横线的版本号
VERSION_WITH_DASH=$(echo "$TRIGGER_VERSION" | sed 's/\./-/g')
echo "🔄 版本分支触发: $REF_NAME"
echo "标准化版本号: $TRIGGER_VERSION"
echo "横线版本号: $VERSION_WITH_DASH"
IS_VERSION_TRIGGER=true
TRIGGER_SOURCE=branch
else
# 常规分支触发
echo "🆕 常规分支触发: $REF_NAME"
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
echo "ref_type=$REF_TYPE" >> $GITHUB_OUTPUT
echo "ref_name=$REF_NAME" >> $GITHUB_OUTPUT
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:
icon: 'git-branch'
color: 'blue'