#!/bin/bash # 环境变量验证脚本 # 用于验证.env.test文件中的环境变量是否正确配置 set -e echo "=== 环境变量验证 ===" echo "" # 定义必需的环境变量 REQUIRED_VARS=( "NODE_ENV" "TEST_ENV" "API_BASE_URL" "FRONTEND_BASE_URL" "DB_HOST" "DB_PORT" "DB_NAME" "DB_USERNAME" "DB_PASSWORD" "WECOM_WEBHOOK_URL" "WECOM_TABLE_ID" ) # 定义可选的环境变量 OPTIONAL_VARS=( "WECOM_BOT_WEBHOOK" "TEST_REDIS_PORT" "TEST_PROMETHEUS_PORT" "TEST_GRAFANA_PORT" "GRAFANA_ADMIN_USER" "GRAFANA_ADMIN_PASSWORD" "TEST_DATA_DIR" "TEST_DATA_SCRIPTS_DIR" "TZ" "LOG_LEVEL" "LOG_FORMAT" "TEST_TIMEOUT" "TEST_RETRY_COUNT" "ENVIRONMENT" ) # 检查.env.test文件是否存在 if [ ! -f ".env.test" ]; then echo "❌ 错误: .env.test文件不存在" exit 1 fi echo "✅ 找到.env.test文件" echo "" # 加载环境变量 set -a source .env.test set +a # 验证必需的环境变量 echo "验证必需的环境变量..." MISSING_VARS=() for var in "${REQUIRED_VARS[@]}"; do if [ -z "${!var}" ]; then MISSING_VARS+=("$var") echo " ❌ $var: 未设置" else # 检查是否为占位符 if [[ "${!var}" == *"YOUR_"* ]]; then echo " ⚠️ $var: 需要配置实际值 (${!var})" else echo " ✅ $var: ${!var}" fi fi done echo "" # 验证可选的环境变量 echo "验证可选的环境变量..." for var in "${OPTIONAL_VARS[@]}"; do if [ -z "${!var}" ]; then echo " ⚠️ $var: 未设置(使用默认值)" else echo " ✅ $var: ${!var}" fi done echo "" # 检查是否有缺失的必需变量 if [ ${#MISSING_VARS[@]} -gt 0 ]; then echo "❌ 错误: 缺少必需的环境变量" echo "缺失的变量: ${MISSING_VARS[*]}" exit 1 fi # 验证数据库连接 echo "验证数据库连接..." if docker exec postgresql_dev psql -U postgres -d everything_suitable_test -c "SELECT 1" > /dev/null 2>&1; then echo " ✅ 数据库连接成功" else echo " ❌ 数据库连接失败" echo " 提示: 请确保postgresql_dev容器正在运行,并且everything_suitable_test数据库已创建" fi echo "" # 验证端口可用性 echo "验证端口可用性..." check_port() { local port=$1 local service=$2 if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then echo " ⚠️ 端口 $port ($service): 已被占用" else echo " ✅ 端口 $port ($service): 可用" fi } check_port 5174 "前端测试服务" check_port 8083 "后端API测试服务" check_port 55432 "PostgreSQL数据库" echo "" # 验证企业微信配置 echo "验证企业微信配置..." if [[ "$WECOM_WEBHOOK_URL" == *"YOUR_KEY"* ]]; then echo " ⚠️ 企业微信Webhook URL需要配置" else echo " ✅ 企业微信Webhook URL已配置" fi if [[ "$WECOM_TABLE_ID" == *"YOUR_TABLE_ID"* ]]; then echo " ⚠️ 企业微信智能表格ID需要配置" else echo " ✅ 企业微信智能表格ID已配置" fi echo "" # 总结 echo "=== 验证总结 ===" if [ ${#MISSING_VARS[@]} -eq 0 ]; then echo "✅ 所有必需的环境变量已设置" else echo "❌ 有 ${#MISSING_VARS[@]} 个必需的环境变量未设置" fi echo "" echo "提示:" echo "1. 请确保所有标记为 ⚠️ 的变量都已配置实际值" echo "2. 请确保postgresql_dev容器正在运行" echo "3. 请确保测试数据库已创建(运行 ./scripts/init-test-database.sh)" echo "" echo "✅ 环境变量验证完成"