112 lines
3.3 KiB
Bash
Executable File
112 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
PIPELINE_URL="https://ci.f.novalon.cn/repos/1/pipeline/31"
|
|
COMMIT_SHA="1e10118"
|
|
MAX_ITERATIONS=10
|
|
|
|
echo "=========================================="
|
|
echo "Ralph Loop: CI/CD Pipeline 自动修复"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Pipeline URL: $PIPELINE_URL"
|
|
echo "Commit SHA: $COMMIT_SHA"
|
|
echo "Max Iterations: $MAX_ITERATIONS"
|
|
echo ""
|
|
|
|
for i in $(seq 1 $MAX_ITERATIONS); do
|
|
echo "=========================================="
|
|
echo "迭代 #$i / $MAX_ITERATIONS"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
echo "📋 步骤1: 检查Pipeline状态"
|
|
echo "访问: $PIPELINE_URL"
|
|
echo ""
|
|
|
|
echo "🔍 步骤2: 分析失败原因"
|
|
echo "请手动检查Pipeline页面,识别失败的步骤"
|
|
echo ""
|
|
|
|
echo "💡 步骤3: 等待用户输入"
|
|
echo "请输入以下选项之一:"
|
|
echo " - 'pass': Pipeline已通过,结束循环"
|
|
echo " - 'fail <step_name>': 指定失败的步骤名称"
|
|
echo " - 'retry': 重新检查状态"
|
|
echo " - 'quit': 退出循环"
|
|
echo ""
|
|
|
|
read -p "输入选项: " choice
|
|
|
|
case $choice in
|
|
pass)
|
|
echo ""
|
|
echo "✅ Pipeline已通过!"
|
|
echo "Ralph Loop完成。"
|
|
exit 0
|
|
;;
|
|
fail*)
|
|
STEP_NAME=$(echo "$choice" | awk '{print $2}')
|
|
echo ""
|
|
echo "❌ 失败步骤: $STEP_NAME"
|
|
echo ""
|
|
echo "🔧 步骤4: 分析失败原因"
|
|
|
|
case $STEP_NAME in
|
|
lint)
|
|
echo "Lint检查失败"
|
|
echo "可能原因:"
|
|
echo " - ESLint配置问题"
|
|
echo " - 代码格式问题"
|
|
echo "修复方案:"
|
|
echo " npm run lint -- --fix"
|
|
;;
|
|
type-check)
|
|
echo "类型检查失败"
|
|
echo "可能原因:"
|
|
echo " - TypeScript类型错误"
|
|
echo "修复方案:"
|
|
echo " npm run type-check"
|
|
;;
|
|
unit-tests)
|
|
echo "单元测试失败"
|
|
echo "可能原因:"
|
|
echo " - 测试用例失败"
|
|
echo " - 覆盖率不足"
|
|
echo "修复方案:"
|
|
echo " npm run test:coverage:check"
|
|
;;
|
|
*)
|
|
echo "未知步骤: $STEP_NAME"
|
|
echo "请手动分析失败原因"
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo "请修复问题后,提交并推送代码"
|
|
read -p "修复完成后输入 'continue' 继续: " confirm
|
|
;;
|
|
retry)
|
|
echo ""
|
|
echo "🔄 重新检查状态..."
|
|
continue
|
|
;;
|
|
quit)
|
|
echo ""
|
|
echo "⚠️ 用户退出循环"
|
|
exit 1
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "❌ 无效选项: $choice"
|
|
echo "请重新输入"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo ""
|
|
echo "⚠️ 达到最大迭代次数 ($MAX_ITERATIONS)"
|
|
echo "Pipeline仍未通过,请手动检查"
|
|
exit 1
|