5c402e49da
- 添加后端启动脚本 - 添加前端启动脚本 - 添加数据库启动脚本 - 添加全量启动脚本 - 添加E2E测试运行脚本
250 lines
6.7 KiB
Bash
Executable File
250 lines
6.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 一键启动所有服务并执行测试脚本
|
|
# 作者: 张翔
|
|
# 日期: 2026-04-15
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo "企业级后台管理系统 - 一键启动与测试"
|
|
echo "=========================================="
|
|
echo "作者: 张翔 (全栈质量保障与效能工程师)"
|
|
echo "日期: 2026-04-15"
|
|
echo "原则: 质量是设计出来的,并通过自动化流水线保障"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 日志函数
|
|
log_info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# 检查依赖
|
|
check_dependencies() {
|
|
log_info "检查系统依赖..."
|
|
|
|
local missing_deps=()
|
|
|
|
# 检查Docker
|
|
if ! command -v docker &> /dev/null; then
|
|
missing_deps+=("Docker")
|
|
fi
|
|
|
|
# 检查docker-compose
|
|
if ! command -v docker-compose &> /dev/null; then
|
|
missing_deps+=("docker-compose")
|
|
fi
|
|
|
|
# 检查Java
|
|
if ! command -v java &> /dev/null; then
|
|
missing_deps+=("Java (JDK 21+)")
|
|
fi
|
|
|
|
# 检查Maven
|
|
if ! command -v mvn &> /dev/null; then
|
|
missing_deps+=("Maven 3.8+")
|
|
fi
|
|
|
|
# 检查Node.js
|
|
if ! command -v node &> /dev/null; then
|
|
missing_deps+=("Node.js 18+")
|
|
fi
|
|
|
|
# 检查包管理器
|
|
if ! command -v pnpm &> /dev/null && ! command -v npm &> /dev/null; then
|
|
missing_deps+=("包管理器 (pnpm 或 npm)")
|
|
fi
|
|
|
|
if [ ${#missing_deps[@]} -gt 0 ]; then
|
|
log_error "缺少以下依赖:"
|
|
for dep in "${missing_deps[@]}"; do
|
|
echo " - $dep"
|
|
done
|
|
echo ""
|
|
echo "请参考项目README安装依赖:"
|
|
echo " https://github.com/your-repo/novalon-manage-system#环境准备要求"
|
|
exit 1
|
|
fi
|
|
|
|
log_success "所有依赖检查通过"
|
|
}
|
|
|
|
# 显示服务信息
|
|
show_service_info() {
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "服务启动信息"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "📊 数据库服务"
|
|
echo " 地址: localhost:55432"
|
|
echo " 数据库: manage_system"
|
|
echo " 用户名: novalon"
|
|
echo " 密码: novalon123"
|
|
echo ""
|
|
echo "⚙️ 后端服务"
|
|
echo " 网关: http://localhost:8080"
|
|
echo " 应用: http://localhost:8084"
|
|
echo " API文档: http://localhost:8084/swagger-ui.html"
|
|
echo " 健康检查: http://localhost:8084/actuator/health"
|
|
echo ""
|
|
echo "🎨 前端服务"
|
|
echo " 应用: http://localhost:3000"
|
|
echo " API代理: http://localhost:3000/api → http://localhost:8080/api"
|
|
echo ""
|
|
echo "🧪 测试信息"
|
|
echo " 测试类型: 冒烟测试 (登录登出)"
|
|
echo " 测试账号: admin/Test@123"
|
|
echo " 测试报告: novalon-manage-web/playwright-report/"
|
|
echo ""
|
|
echo "=========================================="
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
log_info "开始启动所有服务..."
|
|
|
|
# 检查依赖
|
|
check_dependencies
|
|
|
|
# 步骤1: 启动数据库
|
|
log_info "步骤1: 启动数据库容器..."
|
|
if ./scripts/start-database.sh; then
|
|
log_success "数据库启动成功"
|
|
else
|
|
log_error "数据库启动失败"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
log_info "步骤2: 启动后端服务..."
|
|
echo "注意: 后端服务将在当前终端启动,请勿关闭此终端"
|
|
echo " 按 Ctrl+C 可停止后端服务"
|
|
echo ""
|
|
read -p "是否继续启动后端服务? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
log_warning "用户取消启动后端服务"
|
|
exit 0
|
|
fi
|
|
|
|
# 步骤2: 启动后端服务 (在新终端中)
|
|
log_info "正在启动后端服务 (网关:8080 + 应用:8084)..."
|
|
echo "启动命令: ./scripts/start-backend.sh"
|
|
echo ""
|
|
log_warning "请在新终端中执行以下命令:"
|
|
echo "cd $(pwd)"
|
|
echo "./scripts/start-backend.sh"
|
|
echo ""
|
|
read -p "是否已在新终端中启动后端服务? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
log_warning "请先启动后端服务"
|
|
exit 1
|
|
fi
|
|
|
|
# 等待后端服务启动
|
|
log_info "等待后端服务启动..."
|
|
for i in {1..60}; do
|
|
if curl -s http://localhost:8084/actuator/health | grep -q '"status":"UP"'; then
|
|
log_success "后端服务启动成功"
|
|
break
|
|
fi
|
|
echo "等待后端服务... ($i/60)"
|
|
sleep 2
|
|
done
|
|
|
|
# 验证后端服务
|
|
if ! curl -s http://localhost:8084/actuator/health | grep -q '"status":"UP"'; then
|
|
log_error "后端服务启动超时"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
log_info "步骤3: 启动前端服务..."
|
|
echo "注意: 前端服务将在新终端中启动"
|
|
echo ""
|
|
read -p "是否继续启动前端服务? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
log_warning "用户取消启动前端服务"
|
|
exit 0
|
|
fi
|
|
|
|
# 步骤3: 启动前端服务 (在新终端中)
|
|
log_info "正在启动前端开发服务器 (端口:3000)..."
|
|
echo "启动命令: ./scripts/start-frontend.sh"
|
|
echo ""
|
|
log_warning "请在新终端中执行以下命令:"
|
|
echo "cd $(pwd)"
|
|
echo "./scripts/start-frontend.sh"
|
|
echo ""
|
|
read -p "是否已在新终端中启动前端服务? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
log_warning "请先启动前端服务"
|
|
exit 1
|
|
fi
|
|
|
|
# 等待前端服务启动
|
|
log_info "等待前端服务启动..."
|
|
sleep 5
|
|
|
|
echo ""
|
|
log_info "步骤4: 执行用户旅程测试..."
|
|
echo ""
|
|
read -p "是否执行E2E冒烟测试? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
log_warning "用户取消执行测试"
|
|
show_service_info
|
|
exit 0
|
|
fi
|
|
|
|
# 步骤4: 执行E2E测试
|
|
log_info "执行冒烟测试..."
|
|
if ./scripts/run-e2e-tests.sh; then
|
|
log_success "测试执行完成"
|
|
else
|
|
log_error "测试执行失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 显示服务信息
|
|
show_service_info
|
|
|
|
log_success "所有服务启动并测试完成!"
|
|
echo ""
|
|
echo "🎉 系统已就绪,可以开始使用!"
|
|
echo ""
|
|
echo "访问地址:"
|
|
echo " 前端应用: http://localhost:3000"
|
|
echo " API文档: http://localhost:8084/swagger-ui.html"
|
|
echo ""
|
|
echo "测试账号:"
|
|
echo " 管理员: admin / Test@123"
|
|
echo " 普通用户: user / Test@123"
|
|
}
|
|
|
|
# 执行主函数
|
|
main "$@" |