feat: 添加触发版本信息的 GitHub Action,支持标签、版本分支和常规分支触发,提供详细的输出信息和环境变量,更新文档以反映新功能和使用示例。

This commit is contained in:
Lyda
2025-08-20 20:38:33 +08:00
parent e4063690cd
commit 84f608690b
6 changed files with 887 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
name: 'Trigger Version Info'
description: '获取触发版本信息,支持标签触发、版本分支触发和常规分支触发'
author: 'Your Organization'
inputs:
version-prefix:
description: '版本前缀用于匹配版本标签或分支默认v'
required: false
default: 'v'
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: '触发的版本号(去除前缀后的版本)'
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 }}
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 }}"
# 判断是否为标签触发
if [[ "$REF_TYPE" == "tag" ]]; then
# 从标签名提取版本号 (v1.2.3 -> 1.2.3)
if [[ "$REF_NAME" == ${VERSION_PREFIX}* ]]; then
TRIGGER_VERSION=${REF_NAME#${VERSION_PREFIX}}
else
TRIGGER_VERSION=$REF_NAME
fi
echo "🏷️ 标签触发: $REF_NAME"
echo "版本号: $TRIGGER_VERSION"
IS_VERSION_TRIGGER=true
TRIGGER_SOURCE=tag
elif [[ "$REF_TYPE" == "branch" && "$REF_NAME" == ${VERSION_PREFIX}* ]]; then
# 版本分支触发
TRIGGER_VERSION=${REF_NAME#${VERSION_PREFIX}}
echo "🔄 版本分支触发: $REF_NAME"
echo "版本号: $TRIGGER_VERSION"
IS_VERSION_TRIGGER=true
TRIGGER_SOURCE=branch
else
# 常规分支触发
echo "🆕 常规分支触发: $REF_NAME"
IS_VERSION_TRIGGER=false
TRIGGER_VERSION=""
TRIGGER_SOURCE=branch
fi
# 设置环境变量
echo "IS_VERSION_TRIGGER=$IS_VERSION_TRIGGER" >> $GITHUB_ENV
echo "TRIGGER_VERSION=$TRIGGER_VERSION" >> $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 "trigger_source=$TRIGGER_SOURCE" >> $GITHUB_OUTPUT
branding:
icon: 'git-branch'
color: 'blue'