mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
feat: add one-click test environment setup script (setup.sh)
Former-commit-id: 3f2a6bcb61d5219b5b3ab54c809ab4a16f21a7ef
This commit is contained in:
Executable
+139
@@ -0,0 +1,139 @@
|
|||||||
|
#!/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 8500 6379 9092 2181 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"
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user