#!/bin/bash # ============================================================================ # 验证所有微服务的Nacos配置 # 检查配置文件是否正确生成,端口是否正确配置 # ============================================================================ # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}===========================================${NC}" echo -e "${BLUE}验证微服务Nacos配置${NC}" echo -e "${BLUE}===========================================${NC}" # 服务配置 SERVICES="emotion-gateway:19000 emotion-user:19001 emotion-ai:19002 emotion-record:19003 emotion-growth:19004 emotion-explore:19005 emotion-reward:19006 emotion-websocket:19007 emotion-stats:19008" # 验证配置文件 verify_config_file() { local service_name=$1 local port=$2 local env=$3 local config_file="backend/${service_name}/src/main/resources/application-${env}.yml" if [ ! -f "$config_file" ]; then echo -e "${RED} ❌ 配置文件不存在: $config_file${NC}" return 1 fi # 检查Nacos配置 if ! grep -q "nacos:" "$config_file"; then echo -e "${RED} ❌ 缺少Nacos配置${NC}" return 1 fi # 检查服务发现配置 if ! grep -q "discovery:" "$config_file"; then echo -e "${RED} ❌ 缺少服务发现配置${NC}" return 1 fi # 检查数据源配置(除了网关) if [ "$service_name" != "emotion-gateway" ]; then if ! grep -q "datasource:" "$config_file"; then echo -e "${RED} ❌ 缺少数据源配置${NC}" return 1 fi fi # 检查Redis配置 if ! grep -q "redis:" "$config_file"; then echo -e "${RED} ❌ 缺少Redis配置${NC}" return 1 fi echo -e "${GREEN} ✅ $env 环境配置正确${NC}" return 0 } # 验证主配置文件端口 verify_main_config() { local service_name=$1 local expected_port=$2 local main_config="backend/${service_name}/src/main/resources/application.yml" if [ ! -f "$main_config" ]; then echo -e "${RED} ❌ 主配置文件不存在: $main_config${NC}" return 1 fi # 检查端口配置 local actual_port=$(grep "port:" "$main_config" | head -1 | awk '{print $2}') if [ "$actual_port" != "$expected_port" ]; then echo -e "${RED} ❌ 端口配置错误: 期望 $expected_port, 实际 $actual_port${NC}" return 1 fi echo -e "${GREEN} ✅ 主配置端口正确: $expected_port${NC}" return 0 } # 统计结果 total_services=0 success_services=0 failed_services=0 # 处理每个服务 for service_info in $SERVICES; do service_name=$(echo $service_info | cut -d: -f1) port=$(echo $service_info | cut -d: -f2) echo -e "${YELLOW}验证服务: $service_name (端口: $port)${NC}" total_services=$((total_services + 1)) # 检查服务目录是否存在 if [ ! -d "backend/$service_name" ]; then echo -e "${RED} ❌ 服务目录不存在: backend/$service_name${NC}" failed_services=$((failed_services + 1)) continue fi # 验证主配置文件 service_success=true if ! verify_main_config "$service_name" "$port"; then service_success=false fi # 验证环境配置文件 for env in local test prod; do if ! verify_config_file "$service_name" "$port" "$env"; then service_success=false fi done if [ "$service_success" = true ]; then echo -e "${GREEN} ✅ $service_name 所有配置验证通过${NC}" success_services=$((success_services + 1)) else echo -e "${RED} ❌ $service_name 配置验证失败${NC}" failed_services=$((failed_services + 1)) fi echo "" done # 显示统计结果 echo -e "${BLUE}===========================================${NC}" echo -e "${BLUE}验证结果统计${NC}" echo -e "${BLUE}===========================================${NC}" echo -e "总服务数: ${BLUE}$total_services${NC}" echo -e "验证成功: ${GREEN}$success_services${NC}" echo -e "验证失败: ${RED}$failed_services${NC}" if [ $failed_services -eq 0 ]; then echo -e "${GREEN}🎉 所有服务配置验证通过!${NC}" exit 0 else echo -e "${RED}❌ 有 $failed_services 个服务配置存在问题${NC}" exit 1 fi