verify-build.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/bin/bash
  2. echo "════════════════════════════════════════════════════════════"
  3. echo " Docker 镜像构建前验证脚本"
  4. echo "════════════════════════════════════════════════════════════"
  5. echo ""
  6. # 颜色定义
  7. GREEN='\033[0;32m'
  8. RED='\033[0;31m'
  9. YELLOW='\033[1;33m'
  10. NC='\033[0m'
  11. ERRORS=0
  12. # 检查 logstash 依赖
  13. echo "[1/3] 检查 logstash 依赖..."
  14. if mvn dependency:tree -pl shop-recycle-order-service 2>&1 | grep -q "logstash-logback-encoder"; then
  15. echo -e "${GREEN}✓${NC} logstash-logback-encoder 依赖已声明"
  16. else
  17. echo -e "${RED}✗${NC} 缺少 logstash-logback-encoder 依赖"
  18. ERRORS=$((ERRORS + 1))
  19. fi
  20. # 检查 logback 配置文件
  21. echo "[2/3] 检查 logback 配置..."
  22. for service in gateway order-service payment-service; do
  23. config="/opt/demo/demo/shop-recycle-${service}/src/main/resources/logback-spring.xml"
  24. if [ -f "$config" ]; then
  25. if grep -q "JSON_CONSOLE" "$config"; then
  26. echo -e "${YELLOW}!${NC} $service 使用 JSON 输出配置"
  27. else
  28. echo -e "${GREEN}✓${NC} $service 配置文件存在"
  29. fi
  30. else
  31. echo -e "${RED}✗${NC} $service logback 配置文件不存在"
  32. ERRORS=$((ERRORS + 1))
  33. fi
  34. done
  35. # 检查编译后的 JAR 中是否包含 logstash
  36. echo "[3/3] 检查打包后的依赖..."
  37. if jar tf /opt/demo/demo/shop-recycle-order-service/target/order-service.jar 2>/dev/null | grep -q "logstash-logback-encoder"; then
  38. echo -e "${GREEN}✓${NC} logstash 已被打包到 JAR 中"
  39. else
  40. echo -e "${YELLOW}!${NC} logstash 未被打包到 JAR 中(但配置了 provided 或其他原因可能是正确的)"
  41. fi
  42. echo ""
  43. echo "════════════════════════════════════════════════════════════"
  44. if [ $ERRORS -eq 0 ]; then
  45. echo -e "${GREEN}✓ 验证通过,可以构建 Docker 镜像${NC}"
  46. exit 0
  47. else
  48. echo -e "${RED}✗ 验证失败,请修复上述问题${NC}"
  49. exit 1
  50. fi