From 7a642e6c02ceb878c39fdfe98a17e23f86aefad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=8D=E7=BC=96=E8=AF=91=E5=B7=A5=E4=BD=9C=E5=8C=BA?= Date: Fri, 1 May 2026 19:50:57 +0800 Subject: [PATCH] feat: add one-click test environment setup script (setup.sh) Former-commit-id: 3f2a6bcb61d5219b5b3ab54c809ab4a16f21a7ef --- scripts/test-env/setup.sh | 139 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100755 scripts/test-env/setup.sh diff --git a/scripts/test-env/setup.sh b/scripts/test-env/setup.sh new file mode 100755 index 00000000..c2547505 --- /dev/null +++ b/scripts/test-env/setup.sh @@ -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