mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 16:30:29 +08:00
31ec44e21a
Former-commit-id: c7aff428fd4b259c9795da76ce4a53be29f9fe4d
146 lines
4.8 KiB
Bash
Executable File
146 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# setup.sh — V2 测试环境一键搭建入口
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/config/env.sh"
|
|
|
|
cat << 'BANNER'
|
|
╔══════════════════════════════════════════════╗
|
|
║ V2 Full-System Test Environment Setup ║
|
|
║ cw-elevator-application v2.0.7 ║
|
|
╚══════════════════════════════════════════════╝
|
|
BANNER
|
|
|
|
START_TIME=$(date +%s)
|
|
|
|
# ============================================
|
|
# Phase 1: 环境检查
|
|
# ============================================
|
|
log_info "Phase 1/6: Environment check"
|
|
|
|
# JDK 8
|
|
if [[ ! -x "$JAVA_HOME/bin/java" ]]; then
|
|
log_error "JDK 8 not found at $JAVA_HOME"
|
|
log_info "Set DEPLOY_JDK8 environment variable to correct path"
|
|
exit 1
|
|
fi
|
|
JAVA_VER=$("$JAVA_HOME/bin/java" -version 2>&1 | head -1)
|
|
log_ok "JDK: $JAVA_VER"
|
|
|
|
# Maven
|
|
if ! command -v mvn &>/dev/null; then
|
|
log_error "Maven not found"
|
|
exit 1
|
|
fi
|
|
log_ok "Maven: $(mvn --version 2>&1 | head -1)"
|
|
|
|
# Docker
|
|
if ! docker compose version &>/dev/null; then
|
|
log_error "Docker Compose not found"
|
|
exit 1
|
|
fi
|
|
log_ok "Docker: $(docker compose version)"
|
|
|
|
# MySQL
|
|
if ! mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASS" -e "SELECT 1" &>/dev/null; then
|
|
log_error "Cannot connect to MySQL at $MYSQL_HOST:$MYSQL_PORT"
|
|
exit 1
|
|
fi
|
|
log_ok "MySQL: $MYSQL_HOST:$MYSQL_PORT OK"
|
|
|
|
# 端口冲突
|
|
CONFLICT_PORTS=""
|
|
for port in 9517 6380 8090 18080 18081 16106 17011 3721; do
|
|
if ss -tlnp 2>/dev/null | grep -q ":$port "; then
|
|
CONFLICT_PORTS="$CONFLICT_PORTS $port"
|
|
fi
|
|
done
|
|
if [[ -n "$CONFLICT_PORTS" ]]; then
|
|
log_warn "Ports already in use:$CONFLICT_PORTS"
|
|
log_warn "These services may fail to start. Stop existing processes first."
|
|
fi
|
|
|
|
log_ok "Phase 1 complete"
|
|
|
|
# ============================================
|
|
# Phase 2: 数据库准备
|
|
# ============================================
|
|
log_info "Phase 2/6: Database preparation"
|
|
bash "$SCRIPT_DIR/prepare-db.sh"
|
|
log_ok "Phase 2 complete"
|
|
|
|
# ============================================
|
|
# Phase 3: Docker 基础组件启动
|
|
# ============================================
|
|
log_info "Phase 3/6: Docker infrastructure"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# Stop and remove any existing v2test containers and conflicting containers
|
|
log_info "Cleaning up existing containers..."
|
|
docker rm -f v2test-consul v2test-redis v2test-nginx cw-frontend-local-nginx v2-test-redis 2>/dev/null || true
|
|
docker compose -f docker-compose.infra.yml down --remove-orphans 2>/dev/null || true
|
|
|
|
docker compose -f docker-compose.infra.yml up -d
|
|
|
|
log_info "Waiting for Consul..."
|
|
for i in $(seq 1 30); do
|
|
if curl -sf "http://$CONSUL_HOST:$CONSUL_PORT/v1/status/leader" &>/dev/null; then
|
|
break
|
|
fi
|
|
sleep 2
|
|
done
|
|
log_ok "Consul ready"
|
|
|
|
log_info "Waiting for Kafka..."
|
|
sleep 15
|
|
log_ok "Kafka ready"
|
|
log_ok "Phase 3 complete"
|
|
|
|
# ============================================
|
|
# Phase 4: 服务准备
|
|
# ============================================
|
|
log_info "Phase 4/6: Service preparation"
|
|
bash "$SCRIPT_DIR/prepare-services.sh"
|
|
bash "$SCRIPT_DIR/build-elevator-v2.sh"
|
|
log_ok "Phase 4 complete"
|
|
|
|
# ============================================
|
|
# Phase 5: 服务启动
|
|
# ============================================
|
|
log_info "Phase 5/6: Service startup"
|
|
bash "$SCRIPT_DIR/start-all.sh"
|
|
log_ok "Phase 5 complete"
|
|
|
|
# ============================================
|
|
# Phase 6: 验证
|
|
# ============================================
|
|
log_info "Phase 6/6: Verification"
|
|
bash "$SCRIPT_DIR/health-check.sh"
|
|
bash "$SCRIPT_DIR/verify-functional.sh"
|
|
log_ok "Phase 6 complete"
|
|
|
|
# ============================================
|
|
# 汇总
|
|
# ============================================
|
|
END_TIME=$(date +%s)
|
|
DURATION=$((END_TIME - START_TIME))
|
|
|
|
cat << SUMMARY
|
|
|
|
╔══════════════════════════════════════════════╗
|
|
║ Setup Complete! ║
|
|
║ ║
|
|
║ Duration: ${DURATION}s ║
|
|
║ Consul: http://$CONSUL_HOST:$CONSUL_PORT/ui/ ║
|
|
║ Nginx: http://$CONSUL_HOST:$PORT_NGINX/ ║
|
|
║ Elevator V2: http://127.0.0.1:$PORT_ELEVATOR_V2 ║
|
|
║ Elevator V1: http://127.0.0.1:$PORT_ELEVATOR_V1 ║
|
|
║ CRK std: http://127.0.0.1:$PORT_CRK_STD ║
|
|
║ Alarm: http://127.0.0.1:$PORT_ALARM ║
|
|
╚══════════════════════════════════════════════╝
|
|
|
|
To stop: bash scripts/test-env/stop-all.sh && docker compose -f scripts/test-env/docker-compose.infra.yml down
|
|
|
|
SUMMARY
|