feat: 增强 Web 项目发布构建的 GitHub Action,添加发布失败时的错误处理选项,支持状态监控和退出码输出,更新文档以反映新功能和使用示例。

This commit is contained in:
Lyda
2025-08-20 18:39:38 +08:00
parent c039fac36c
commit da4e1db20d
2 changed files with 234 additions and 20 deletions

View File

@@ -21,6 +21,11 @@ inputs:
description: '自定义版本文件路径,默认为 /tmp/last-version'
required: false
default: '/tmp/last-version'
fail-on-error:
description: '发布失败时是否让 action 失败 (true/false)'
required: false
default: 'true'
outputs:
version:
@@ -30,23 +35,47 @@ outputs:
version-with-dash:
description: '版本号(点号替换为横线)'
value: ${{ steps.get_var.outputs.version_with_dash }}
release-status:
description: '发布命令执行状态 (success/failure)'
value: ${{ steps.release_build.outputs.status }}
exit-code:
description: '发布命令退出码(仅在失败时有值)'
value: ${{ steps.release_build.outputs.exit_code }}
runs:
using: 'composite'
steps:
- name: 发布构建
id: release_build
shell: bash
run: |
echo "🚀 开始发布构建..."
echo "执行命令: ${{ inputs.release-command }}"
# 设置错误处理,防止命令失败时立即退出
set +e
${{ inputs.release-command }}
echo "✅ 发布构建完成"
RELEASE_EXIT_CODE=$?
set -e
# 根据退出码设置状态
if [ $RELEASE_EXIT_CODE -eq 0 ]; then
echo "status=success" >> $GITHUB_OUTPUT
echo "✅ 发布构建完成"
else
echo "status=failure" >> $GITHUB_OUTPUT
echo "❌ 发布构建失败 (退出码: $RELEASE_EXIT_CODE)"
echo "exit_code=$RELEASE_EXIT_CODE" >> $GITHUB_OUTPUT
fi
env:
NODE_DEBUG: ${{ inputs.node-debug == 'true' && 'release-it:*' || '' }}
- name: 获取版本信息
id: get_var
shell: bash
if: steps.release_build.outputs.status == 'success'
run: |
echo "📝 获取版本信息..."
VERSION=""
@@ -108,8 +137,41 @@ runs:
- name: 发布总结
shell: bash
if: always()
run: |
echo "🎉 发布流程完成!"
echo "📋 发布流程总结"
echo ""
echo "📋 发布信息:"
echo " - 版本号: ${{ steps.get_var.outputs.version }}"
echo "📊 发布状态: ${{ steps.release_build.outputs.status }}"
if [[ "${{ steps.release_build.outputs.status }}" == "success" ]]; then
echo "🎉 发布构建成功完成!"
echo ""
echo "📋 发布信息:"
echo " - 版本号: ${{ steps.get_var.outputs.version }}"
echo " - 带横线版本: ${{ steps.get_var.outputs.version_with_dash }}"
else
echo "❌ 发布构建失败"
echo ""
echo "📋 错误信息:"
echo " - 状态: 失败"
if [[ -n "${{ steps.release_build.outputs.exit_code }}" ]]; then
echo " - 退出码: ${{ steps.release_build.outputs.exit_code }}"
fi
echo " - 建议: 请检查发布命令和项目配置"
fi
- name: 检查发布结果
shell: bash
if: always()
run: |
if [[ "${{ steps.release_build.outputs.status }}" == "failure" ]]; then
if [[ "${{ inputs.fail-on-error }}" == "true" ]]; then
echo "❌ 发布失败,根据 fail-on-error=true 设置,终止 action 执行"
exit 1
else
echo "⚠️ 发布失败,但根据 fail-on-error=false 设置action 将继续完成"
echo "💡 您可以通过 outputs.release-status 检查发布状态"
fi
else
echo "✅ 发布成功action 正常完成"
fi