08ea5fbe98
添加用户管理视图、API和状态管理文件
141 lines
4.0 KiB
Bash
Executable File
141 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
|
|
cd "$PROJECT_ROOT"
|
|
|
|
echo "========================================="
|
|
echo "测试环境部署脚本"
|
|
echo "========================================="
|
|
|
|
check_docker() {
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "错误: Docker未安装"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v docker-compose &> /dev/null; then
|
|
echo "错误: Docker Compose未安装"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✓ Docker环境检查通过"
|
|
}
|
|
|
|
check_ports() {
|
|
local ports=("$@")
|
|
for port in "${ports[@]}"; do
|
|
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then
|
|
echo "警告: 端口 $port 已被占用"
|
|
fi
|
|
done
|
|
}
|
|
|
|
build_images() {
|
|
echo "构建Docker镜像..."
|
|
docker-compose -f docker-compose.test-new.yml --env-file .env.test build
|
|
echo "✓ Docker镜像构建完成"
|
|
}
|
|
|
|
start_services() {
|
|
echo "启动测试服务..."
|
|
docker-compose -f docker-compose.test-new.yml --env-file .env.test up -d
|
|
echo "✓ 测试服务启动完成"
|
|
}
|
|
|
|
wait_for_services() {
|
|
echo "等待服务启动..."
|
|
local max_attempts=60
|
|
local attempt=0
|
|
|
|
while [ $attempt -lt $max_attempts ]; do
|
|
local all_healthy=true
|
|
|
|
if ! docker-compose -f docker-compose.test-new.yml --env-file .env.test ps | grep -q "test-postgres.*healthy"; then
|
|
all_healthy=false
|
|
fi
|
|
|
|
if ! docker-compose -f docker-compose.test-new.yml --env-file .env.test ps | grep -q "test-redis.*healthy"; then
|
|
all_healthy=false
|
|
fi
|
|
|
|
if $all_healthy; then
|
|
echo "✓ 所有服务启动成功"
|
|
return 0
|
|
fi
|
|
|
|
attempt=$((attempt + 1))
|
|
echo "等待服务启动... ($attempt/$max_attempts)"
|
|
sleep 5
|
|
done
|
|
|
|
echo "错误: 服务启动超时"
|
|
docker-compose -f docker-compose.test-new.yml --env-file .env.test logs
|
|
exit 1
|
|
}
|
|
|
|
init_database() {
|
|
echo "初始化测试数据库..."
|
|
docker-compose -f docker-compose.test-new.yml --env-file .env.test exec -T test-postgres psql -U ${TEST_DB_USER:-test_user} -d ${TEST_DB_NAME:-everything_test} -f /docker-entrypoint-initdb.d/init-test-db.sql
|
|
echo "✓ 测试数据库初始化完成"
|
|
}
|
|
|
|
generate_test_data() {
|
|
echo "生成测试数据..."
|
|
python3 scripts/generate-test-data.py
|
|
echo "✓ 测试数据生成完成"
|
|
}
|
|
|
|
verify_deployment() {
|
|
echo "验证部署..."
|
|
|
|
echo "检查PostgreSQL..."
|
|
docker-compose -f docker-compose.test-new.yml --env-file .env.test exec -T test-postgres pg_isready -U ${TEST_DB_USER:-test_user}
|
|
|
|
echo "检查Redis..."
|
|
docker-compose -f docker-compose.test-new.yml --env-file .env.test exec -T test-redis redis-cli ping
|
|
|
|
echo "检查API Gateway..."
|
|
curl -f http://localhost:${TEST_API_PORT:-8081}/actuator/health
|
|
|
|
echo "检查Admin Backend..."
|
|
curl -f http://localhost:${TEST_ADMIN_PORT:-8082}/actuator/health
|
|
|
|
echo "✓ 部署验证完成"
|
|
}
|
|
|
|
main() {
|
|
check_docker
|
|
check_ports ${TEST_DB_PORT:-5433} ${TEST_REDIS_PORT:-6380} ${TEST_API_PORT:-8081} ${TEST_ADMIN_PORT:-8082}
|
|
|
|
build_images
|
|
start_services
|
|
wait_for_services
|
|
init_database
|
|
generate_test_data
|
|
verify_deployment
|
|
|
|
echo ""
|
|
echo "========================================="
|
|
echo "测试环境部署完成!"
|
|
echo "========================================="
|
|
echo ""
|
|
echo "服务访问地址:"
|
|
echo " API Gateway: http://localhost:${TEST_API_PORT:-8081}"
|
|
echo " Admin Backend: http://localhost:${TEST_ADMIN_PORT:-8082}"
|
|
echo " PostgreSQL: localhost:${TEST_DB_PORT:-5433}"
|
|
echo " Redis: localhost:${TEST_REDIS_PORT:-6380}"
|
|
echo ""
|
|
echo "管理命令:"
|
|
echo " 停止环境: ./scripts/setup-test-env.sh stop"
|
|
echo " 查看状态: ./scripts/setup-test-env.sh status"
|
|
echo " 查看日志: ./scripts/setup-test-env.sh logs"
|
|
echo " 清理环境: ./scripts/setup-test-env.sh clean"
|
|
echo ""
|
|
}
|
|
|
|
main "$@"
|