Files
everything-is-suitable/scripts/verify-env.sh
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

158 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 "✅ 环境变量验证完成"