#!/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 "验证脚本完成!"