Files
novalon-website/scripts/test-cicd-config.sh
T
张翔 a4fd907add
ci/woodpecker/push/woodpecker Pipeline failed
fix(ci): 优化Woodpecker CI配置,增强SSH连接和Git操作可靠性
- 增强SSH连接测试,添加timeout和BatchMode参数
- 改进网络连通性检查,使用dig替代nslookup
- 分步骤执行Git归档操作,每一步都有错误检查
- 增强错误处理和日志输出,便于问题诊断
- 添加CICD配置验证脚本
2026-03-30 20:59:11 +08:00

125 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
# CICD配置验证脚本
# 用于验证Woodpecker CI配置的正确性和可靠性
echo "=== CICD配置验证脚本 ==="
echo ""
# 1. 检查YAML语法
echo "1. 检查YAML语法..."
if command -v yamllint >/dev/null 2>&1; then
yamllint .woodpecker.yml && echo "✅ YAML语法检查通过" || echo "❌ YAML语法检查失败"
else
echo "⚠ yamllint未安装,跳过语法检查"
fi
# 2. 检查关键文件存在性
echo ""
echo "2. 检查关键文件存在性..."
files_to_check=(".woodpecker.yml" "package.json" "next.config.ts" "Dockerfile.prod" "docker-compose.server.yml")
for file in "${files_to_check[@]}"; do
if [ -f "$file" ]; then
echo "$file 存在"
else
echo "$file 不存在"
fi
done
# 3. 检查package.json脚本
echo ""
echo "3. 检查package.json脚本..."
if [ -f "package.json" ]; then
required_scripts=("build" "lint" "type-check" "test")
for script in "${required_scripts[@]}"; do
if grep -q "\"$script\"" package.json; then
echo "$script 脚本存在"
else
echo "$script 脚本不存在"
fi
done
fi
# 4. 检查构建配置
echo ""
echo "4. 检查构建配置..."
if [ -f "next.config.ts" ]; then
echo "✅ Next.js配置文件存在"
# 检查是否有明显的配置问题
if grep -q "output" next.config.ts; then
echo "✅ 输出配置已设置"
else
echo "⚠ 输出配置可能需要检查"
fi
fi
# 5. 验证SSH配置
echo ""
echo "5. 验证SSH配置..."
echo "检查SSH服务器连通性..."
# 测试DNS解析
echo "测试DNS解析 git.f.novalon.cn..."
if command -v dig >/dev/null 2>&1; then
dig +short git.f.novalon.cn >/dev/null 2>&1 && echo "✅ DNS解析成功" || echo "❌ DNS解析失败"
elif command -v nslookup >/dev/null 2>&1; then
nslookup git.f.novalon.cn >/dev/null 2>&1 && echo "✅ DNS解析成功" || echo "❌ DNS解析失败"
else
echo "⚠ DNS工具未安装,跳过测试"
fi
# 测试端口连通性
echo "测试端口连通性 git.f.novalon.cn:22..."
if command -v nc >/dev/null 2>&1; then
timeout 5 nc -zv git.f.novalon.cn 22 >/dev/null 2>&1 && echo "✅ 端口连通性正常" || echo "❌ 端口连通性失败"
else
echo "⚠ netcat未安装,跳过测试"
fi
# 6. 检查部署脚本
echo ""
echo "6. 检查部署脚本..."
if [ -f "scripts/deploy-production.sh" ]; then
echo "✅ 部署脚本存在"
# 检查脚本权限
if [ -x "scripts/deploy-production.sh" ]; then
echo "✅ 部署脚本可执行"
else
echo "⚠ 部署脚本不可执行,需要chmod +x"
fi
else
echo "❌ 部署脚本不存在"
fi
# 7. 验证Docker配置
echo ""
echo "7. 验证Docker配置..."
if [ -f "Dockerfile.prod" ]; then
echo "✅ 生产Dockerfile存在"
# 检查基础镜像
if grep -q "FROM" Dockerfile.prod; then
echo "✅ Dockerfile包含FROM指令"
fi
fi
if [ -f "docker-compose.server.yml" ]; then
echo "✅ Docker Compose配置文件存在"
fi
# 8. 总结报告
echo ""
echo "=== 验证总结 ==="
echo ""
echo "建议:"
echo "1. 确保所有必需的文件都存在"
echo "2. 验证SSH连接和网络连通性"
echo "3. 测试构建和部署流程"
echo "4. 检查环境变量和密钥配置"
echo ""
echo "要触发CICD测试,可以:"
echo "- 推送代码到release分支"
echo "- 手动触发Woodpecker CI流水线"
echo "- 监控构建日志和错误信息"
echo ""
echo "验证脚本完成!"