feat: add test env infra compose, config templates, build/prepare scripts

Former-commit-id: 70b7cd14e81c8f43300638dcd5f9859115e1959a
This commit is contained in:
反编译工作区
2026-05-01 19:41:18 +08:00
parent 8b15445328
commit e9cd71029d
8 changed files with 345 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
# build-elevator-v2.sh — 编译 cw-elevator-application V2
source "$(dirname "${BASH_SOURCE[0]}")/config/env.sh"
log_info "Building V2 elevator application..."
cd "$REPO_ROOT/maven-cw-elevator-application"
export JAVA_HOME
export PATH="$JAVA_HOME/bin:$PATH"
log_info "JDK: $($JAVA -version 2>&1 | head -1)"
# Build (skip tests)
$MVN clean install $MVN_OPTS 2>&1 | tail -5
if [[ ${PIPESTATUS[0]} -eq 0 ]]; then
log_ok "V2 elevator build SUCCESS"
else
log_error "V2 elevator build FAILED — check logs"
exit 1
fi
# Sync JAR to deploy/
if [[ -f "cw-elevator-application-starter/target/cw-elevator-application-2.0.7.jar" ]]; then
cp cw-elevator-application-starter/target/cw-elevator-application-2.0.7.jar \
deploy/v2-maven/cw-elevator-application-2.0.7.jar
log_ok "JAR synced to deploy/v2-maven/"
else
# Fallback: use sync-jars.sh
cd deploy && bash sync-jars.sh
log_ok "JAR synced via sync-jars.sh"
fi
@@ -0,0 +1,41 @@
# Alarm app test config
spring.application.name=ninca-qk-alarm-app
server.port=__ALARM_PORT__
spring.main.allow-bean-definition-overriding=true
# Consul
spring.cloud.consul.host=__CONSUL_HOST__
spring.cloud.consul.port=__CONSUL_PORT__
spring.cloud.consul.discovery.register=true
spring.cloud.consul.discovery.ip-address=127.0.0.1
# MySQL
spring.datasource.url=jdbc:mysql://__MYSQL_HOST__:__MYSQL_PORT__/alarm_deploy?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
# Redis
spring.redis.host=__REDIS_HOST__
spring.redis.port=6379
spring.redis.password=__REDIS_PASS__
spring.redis.database=7
# Kafka
kafka.producer.bootstrap-servers=__KAFKA_HOST__:__KAFKA_PORT__
kafka.consumer.bootstrap-servers=__KAFKA_HOST__:__KAFKA_PORT__
spring.kafka.bootstrap-servers=__KAFKA_HOST__:__KAFKA_PORT__
spring.kafka.consumer.group-id=alarm_test
# Feign names
cloudwalk.alarm-app.feign.name.cwos-portal=cwos-portal
cloudwalk.alarm-app.feign.name.component-organization=ninca-common-component-organization
cloudwalk.alarm-app.feign.name.ninca-common=ninca-common
# Management
management.port=__ALARM_MGMT_PORT__
management.context-path=/actuator
management.security.enabled=false
# Disable non-essential features for test
swagger.enable=false
sendRecord.boolean=false
@@ -0,0 +1,11 @@
server.port=__COMPONENT_ORG_PORT__
spring.application.name=ninca-common-component-organization
spring.datasource.url=jdbc:mysql://__MYSQL_HOST__:__MYSQL_PORT__/component-organization?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.cloud.consul.host=__CONSUL_HOST__
spring.cloud.consul.port=__CONSUL_PORT__
spring.cloud.consul.discovery.register=true
spring.redis.host=__REDIS_HOST__
spring.redis.port=6379
spring.redis.password=__REDIS_PASS__
@@ -0,0 +1,54 @@
# CRK-std test config
spring.application.name=ninca-crk-std
server.port=__CRK_PORT__
spring.profiles.active=smart-attendance,visitor-management,access-control,conference-attendance
# Consul
spring.cloud.consul.host=__CONSUL_HOST__
spring.cloud.consul.port=__CONSUL_PORT__
spring.cloud.consul.discovery.register=true
spring.cloud.consul.discovery.ip-address=127.0.0.1
# MySQL
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://__MYSQL_HOST__:__MYSQL_PORT__/ninca_crk_std?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
spring.shardingsphere.datasource.ds0.username=root
spring.shardingsphere.datasource.ds0.password=123456
# Redis
spring.redis.host=__REDIS_HOST__
spring.redis.port=6379
spring.redis.password=__REDIS_PASS__
spring.redis.database=5
# Kafka
kafka.producer.bootstrap-servers=__KAFKA_HOST__:__KAFKA_PORT__
kafka.consumer.bootstrap-servers=__KAFKA_HOST__:__KAFKA_PORT__
spring.kafka.bootstrap-servers=__KAFKA_HOST__:__KAFKA_PORT__
spring.kafka.consumer.group-id=crk_std_test
cloudwalk.event.bootstrap-servers=__KAFKA_HOST__:__KAFKA_PORT__
cloudwalk.event.group-id=crk_std
# Feign service names
feign.device.name=cwos-portal
feign.resource.name=cwos-portal
feign.cwos-portal.name=cwos-portal
feign.portal.name=cwos-portal
feign.component-organization.name=ninca-common-component-organization
feign.davinci-portal.name=cwos-portal
feign.ninca-common.name=ninca-common
feign.elevator.name=elevator-app
# Quartz
quartz.driver=com.mysql.jdbc.Driver
quartz.url=jdbc:mysql://__MYSQL_HOST__:__MYSQL_PORT__/ninca_crk_std?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
quartz.user=root
quartz.password=123456
# Management
management.port=__CRK_MGMT_PORT__
management.context-path=/actuator
management.security.enabled=false
xinhewan.businessid=2524639890ba4f2cba9ba1a4eeaa4015
push.method=1
sendRecord.boolean=false
@@ -0,0 +1,48 @@
# V2 elevator test config — auto-generated from template
# Variables: __MYSQL_HOST__ __MYSQL_PORT__ __REDIS_HOST__ __REDIS_PASS__
# __CONSUL_HOST__ __CONSUL_PORT__ __KAFKA_HOST__ __KAFKA_PORT__
# __CRK_HOST__ __CRK_PORT__
server.port=18081
spring.application.name=elevator-app
spring.profiles.active=access-control
# Consul
spring.cloud.consul.host=__CONSUL_HOST__
spring.cloud.consul.port=__CONSUL_PORT__
spring.cloud.consul.enabled=true
spring.cloud.consul.discovery.register=true
spring.cloud.consul.discovery.enabled=false
# MySQL (ShardingSphere)
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://__MYSQL_HOST__:__MYSQL_PORT__/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
spring.shardingsphere.datasource.ds0.username=root
spring.shardingsphere.datasource.ds0.password=123456
# Redis
spring.redis.host=__REDIS_HOST__
spring.redis.port=6379
spring.redis.password=__REDIS_PASS__
spring.redis.database=5
# Kafka
cloudwalk.event.bootstrap-servers=__KAFKA_HOST__:__KAFKA_PORT__
cloudwalk.event.group-id=cw-elevator-application-test
# Feign targets
feign.device.name=cwos-portal
feign.cwos-portal.name=cwos-portal
feign.ninca-crk-std.name=ninca-crk-std
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
ninca-crk-std.ribbon.listOfServers=__CRK_HOST__:__CRK_PORT__
ninca-crk-std.ip=__CRK_HOST__:__CRK_PORT__
# Other
feign.hystrix.enable=true
feign.okhttp.enable=true
ribbon.ReadTimeout=10000
ribbon.ConnectTimeout=10000
elevator.application.key=xinghewan
elevator.application.time=600
elevator.application.keyA=5B7DEF88FF04
floor.building.id=605560539791228928
sendRecord.boolean=false
@@ -0,0 +1,11 @@
server.port=__NINCA_COMMON_PORT__
spring.application.name=ninca-common
spring.datasource.url=jdbc:mysql://__MYSQL_HOST__:__MYSQL_PORT__/ninca_common?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.cloud.consul.host=__CONSUL_HOST__
spring.cloud.consul.port=__CONSUL_PORT__
spring.cloud.consul.discovery.register=true
spring.redis.host=__REDIS_HOST__
spring.redis.port=6379
spring.redis.password=__REDIS_PASS__
+65
View File
@@ -0,0 +1,65 @@
version: '3.8'
services:
consul:
image: hashicorp/consul:1.22
container_name: v2test-consul
restart: unless-stopped
ports:
- "8500:8500"
command: >
agent -server -bootstrap-expect=1 -ui
-client=0.0.0.0 -bind=0.0.0.0
-data-dir=/consul/data
volumes:
- consul-data:/consul/data
redis:
image: redis:7-alpine
container_name: v2test-redis
restart: unless-stopped
ports:
- "6379:6379"
command: redis-server --requirepass "1qaz!QAZ"
zookeeper:
image: bitnami/zookeeper:3.9
container_name: v2test-zookeeper
restart: unless-stopped
ports:
- "2181:2181"
environment:
ALLOW_ANONYMOUS_LOGIN: "yes"
kafka:
image: bitnami/kafka:3.6
container_name: v2test-kafka
restart: unless-stopped
ports:
- "9092:9092"
environment:
KAFKA_CFG_NODE_ID: 1
KAFKA_CFG_PROCESS_ROLES: "broker,controller"
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: "1@localhost:9093"
KAFKA_CFG_LISTENERS: "PLAINTEXT://:9092,CONTROLLER://:9093"
KAFKA_CFG_ADVERTISED_LISTENERS: "PLAINTEXT://localhost:9092"
KAFKA_CFG_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT"
KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "true"
depends_on:
- zookeeper
nginx:
image: nginx:alpine
container_name: v2test-nginx
restart: unless-stopped
ports:
- "8090:80"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ../../frontend:/data/cwos/frontend:ro
- ../../nginx.frontend-local.conf:/etc/nginx/conf.d/default.conf:ro
volumes:
consul-data:
+82
View File
@@ -0,0 +1,82 @@
#!/bin/bash
# prepare-services.sh — 解压 tar.gz + 从模板生成配置
source "$(dirname "${BASH_SOURCE[0]}")/config/env.sh"
log_info "Phase 4: Service preparation"
mkdir -p "$SERVICE_DIR" "$LOG_DIR"
# Tarballs to extract
TARBALLS=(
"$STAR_CENTER/ninca_common_01-ninca_common_backend.tar.gz:ninca-common"
"$STAR_CENTER/ninca_common_component_organization_01-ninca_common_component_organization.tar.gz:component-org"
"$STAR_CENTER/ninca_common_snap_app_01-ninca_common_snap_app.tar.gz:snap-app"
"$STAR_CENTER/ninca_common_vehicle_app_01-ninca_common_vehicle_app.tar.gz:vehicle-app"
"$STAR_CENTER/ninca_common_monitor_app_01-ninca_common_monitor_app.tar.gz:monitor-app"
"$STAR_CENTER/ninca-person-file-app-V2.9.2_20210216.tar.gz:person-file"
)
for item in "${TARBALLS[@]}"; do
tarball="${item%%:*}"
svc_name="${item##*:}"
svc_dir="$SERVICE_DIR/$svc_name"
if [[ -d "$svc_dir" ]]; then
log_info "Already extracted: $svc_name — skipping"
continue
fi
log_info "Extracting $tarball$svc_dir ..."
mkdir -p "$svc_dir"
tar -xzf "$tarball" -C "$svc_dir" --strip-components=1
log_ok " $svc_name extracted"
done
render_template() {
local template="$1"
local output="$2"
sed \
-e "s|__MYSQL_HOST__|$MYSQL_HOST|g" \
-e "s|__MYSQL_PORT__|$MYSQL_PORT|g" \
-e "s|__REDIS_HOST__|$REDIS_HOST|g" \
-e "s|__REDIS_PASS__|$REDIS_PASS|g" \
-e "s|__CONSUL_HOST__|$CONSUL_HOST|g" \
-e "s|__CONSUL_PORT__|$CONSUL_PORT|g" \
-e "s|__KAFKA_HOST__|$KAFKA_HOST|g" \
-e "s|__KAFKA_PORT__|$KAFKA_PORT|g" \
-e "s|__CRK_HOST__|127.0.0.1|g" \
-e "s|__CRK_PORT__|$PORT_CRK_STD|g" \
-e "s|__CRK_MGMT_PORT__|$PORT_CRK_MGMT|g" \
-e "s|__ALARM_PORT__|$PORT_ALARM|g" \
-e "s|__ALARM_MGMT_PORT__|$PORT_ALARM_MGMT|g" \
-e "s|__NINCA_COMMON_PORT__|$PORT_NINCA_COMMON|g" \
-e "s|__COMPONENT_ORG_PORT__|$PORT_COMPONENT_ORG|g" \
"$template" > "$output"
}
# Generate configs for each service
render_template "$TEST_ENV_DIR/config/service-templates/elevator-v2.properties" \
"$REPO_ROOT/maven-cw-elevator-application/deploy/v2-maven/application-test.properties"
log_ok " elevator-v2 config generated"
render_template "$TEST_ENV_DIR/config/service-templates/crk-std.properties" \
"$STAR_CENTER/ninca_crk_std_01-ninca_crk_std_backend/application-test.properties"
log_ok " crk-std config generated"
render_template "$TEST_ENV_DIR/config/service-templates/alarm.properties" \
"$STAR_CENTER/ninca_qk_alarm_app_01-ninca_qk_alarm_app/application-test.properties"
log_ok " alarm config generated"
# Generate configs for extracted tarball services
if [[ -d "$SERVICE_DIR/ninca-common" ]]; then
render_template "$TEST_ENV_DIR/config/service-templates/ninca-common.properties" \
"$SERVICE_DIR/ninca-common/application-test.properties"
log_ok " ninca-common config generated"
fi
if [[ -d "$SERVICE_DIR/component-org" ]]; then
render_template "$TEST_ENV_DIR/config/service-templates/component-org.properties" \
"$SERVICE_DIR/component-org/application-test.properties"
log_ok " component-org config generated"
fi
log_info "Service preparation complete"