build(ci): add stage deployment pipeline and configs

This commit is contained in:
lzh
2026-03-30 22:53:46 +08:00
parent 19cb25b0ea
commit 90fa54dc11
8 changed files with 978 additions and 10 deletions

View File

@@ -0,0 +1,128 @@
--- #################### 搴旂敤閰嶇疆 ####################
spring:
application:
name: iot-gateway-server
profiles:
active: stage
# Redis 閰嶇疆
data:
redis:
host: ${REDIS_HOST:172.17.16.7}
port: ${REDIS_PORT:6379}
database: ${REDIS_DATABASE:0}
password: ${REDIS_PASSWORD:}
timeout: ${REDIS_TIMEOUT:30000ms}
--- #################### 娑堟伅闃熷垪鐩稿叧 ####################
# rocketmq 閰嶇疆椤癸紝瀵瑰簲 RocketMQProperties 閰嶇疆绫?rocketmq:
name-server: ${ROCKETMQ_NAMESRV_ADDR:124.222.218.198:9876}
producer:
group: ${spring.application.name}_PRODUCER
access-key: ${ROCKETMQ_ACCESS_KEY:}
secret-key: ${ROCKETMQ_SECRET_KEY:}
consumer:
access-key: ${ROCKETMQ_ACCESS_KEY:}
secret-key: ${ROCKETMQ_SECRET_KEY:}
--- #################### IoT 缃戝叧鐩稿叧閰嶇疆 ####################
viewsh:
iot:
# 娑堟伅鎬荤嚎閰嶇疆
message-bus:
type: ${IOT_MESSAGE_BUS_TYPE:redis}
# 缃戝叧閰嶇疆
gateway:
# 璁惧 RPC 閰嶇疆
rpc:
url: ${VIEWSH_IOT_GATEWAY_RPC_URL:http://aiot-iot-server:48091}
connect-timeout: ${VIEWSH_RPC_CONNECT_TIMEOUT:30s}
read-timeout: ${VIEWSH_RPC_READ_TIMEOUT:30s}
# 璁惧 Token 閰嶇疆
token:
secret: ${VIEWSH_IOT_TOKEN_SECRET:viewshIotGatewayTokenSecret123456789}
expiration: ${VIEWSH_IOT_TOKEN_EXPIRATION:7d}
# 鍗忚閰嶇疆
protocol:
# ====================================
# 閽堝寮曞叆鐨?HTTP 缁勪欢鐨勯厤缃? # ====================================
http:
enabled: ${IOT_HTTP_ENABLED:true}
server-port: ${IOT_HTTP_PORT:8092}
# ====================================
# 閽堝寮曞叆鐨?EMQX 缁勪欢鐨勯厤缃? # ====================================
emqx:
enabled: ${IOT_EMQX_ENABLED:false}
http-port: ${IOT_EMQX_HTTP_PORT:8090}
mqtt-host: ${IOT_EMQX_MQTT_HOST:127.0.0.1}
mqtt-port: ${IOT_EMQX_MQTT_PORT:1883}
mqtt-username: ${IOT_EMQX_MQTT_USERNAME:admin}
mqtt-password: ${IOT_EMQX_MQTT_PASSWORD:public}
mqtt-client-id: ${IOT_EMQX_MQTT_CLIENT_ID:iot-gateway-mqtt}
mqtt-ssl: ${IOT_EMQX_MQTT_SSL:false}
mqtt-topics:
- "/sys/#"
clean-session: true
keep-alive-interval-seconds: 60
max-inflight-queue: 10000
connect-timeout-seconds: 10
# 鏄惁淇′换鎵€鏈?SSL 璇佷功 (榛樿: false)銆傝鍛婏細鐢熶骇鐜蹇呴』涓?false锛? # 浠呭湪寮€鍙戠幆澧冩垨鍐呯綉娴嬭瘯鏃讹紝濡傛灉浣跨敤浜嗚嚜绛惧悕璇佷功锛屽彲浠ヤ复鏃惰缃负 true
trust-all: ${IOT_EMQX_TRUST_ALL:false}
# 閬楀槺娑堟伅閰嶇疆 (鐢ㄤ簬缃戝叧寮傚父涓嬬嚎鏃堕€氱煡鍏朵粬绯荤粺)
will:
enabled: ${IOT_EMQX_WILL_ENABLED:true}
topic: "gateway/status/${viewsh.iot.gateway.emqx.mqtt-client-id}"
payload: "offline"
qos: 1
retain: true
# 楂樼骇 SSL/TLS 閰嶇疆 (褰?trust-all: false 涓?mqtt-ssl: true 鏃剁敓鏁?
ssl-options:
key-store-path: ${IOT_EMQX_SSL_KEYSTORE_PATH:classpath:certs/client.jks}
key-store-password: ${IOT_EMQX_SSL_KEYSTORE_PASSWORD:your-keystore-password}
trust-store-path: ${IOT_EMQX_SSL_TRUSTSTORE_PATH:classpath:certs/trust.jks}
trust-store-password: ${IOT_EMQX_SSL_TRUSTSTORE_PASSWORD:your-truststore-password}
# ====================================
# 閽堝寮曞叆鐨?TCP 缁勪欢鐨勯厤缃? # ====================================
tcp:
enabled: ${IOT_TCP_ENABLED:false}
port: ${IOT_TCP_PORT:8091}
keep-alive-timeout-ms: ${IOT_TCP_KEEPALIVE_TIMEOUT:30000}
max-connections: ${IOT_TCP_MAX_CONNECTIONS:1000}
ssl-enabled: ${IOT_TCP_SSL_ENABLED:false}
ssl-cert-path: ${IOT_TCP_SSL_CERT_PATH:classpath:certs/client.jks}
ssl-key-path: ${IOT_TCP_SSL_KEY_PATH:classpath:certs/client.jks}
# ====================================
# 閽堝寮曞叆鐨?MQTT 缁勪欢鐨勯厤缃? # ====================================
mqtt:
enabled: ${IOT_MQTT_ENABLED:true}
port: ${IOT_MQTT_PORT:1883}
max-message-size: ${IOT_MQTT_MAX_MESSAGE_SIZE:8192}
connect-timeout-seconds: ${IOT_MQTT_CONNECT_TIMEOUT:60}
ssl-enabled: ${IOT_MQTT_SSL_ENABLED:false}
--- #################### 鏃ュ織鐩稿叧閰嶇疆 ####################
# 鍩虹鏃ュ織閰嶇疆
logging:
file:
name: ${LOG_FILE_PATH:/app/logs}/${spring.application.name}.log
level:
# 搴旂敤鍩虹鏃ュ織绾у埆
com.viewsh.module.iot.gateway: ${LOG_LEVEL_IOT_GATEWAY:INFO}
org.springframework.boot: INFO
# RocketMQ 鏃ュ織
org.apache.rocketmq: WARN
# MQTT 瀹㈡埛绔棩蹇? # io.vertx.mqtt: DEBUG
# 鐢熶骇鐜鏃ュ織
com.viewsh.module.iot.gateway.protocol.emqx: ${LOG_LEVEL_EMQX:INFO}
com.viewsh.module.iot.gateway.protocol.http: ${LOG_LEVEL_HTTP:INFO}
com.viewsh.module.iot.gateway.protocol.mqtt: ${LOG_LEVEL_MQTT:INFO}
# 鏍规棩蹇楃骇鍒? root: INFO
debug: false

View File

@@ -0,0 +1,167 @@
--- #################### 娉ㄥ唽涓績 + 閰嶇疆涓績鐩稿叧閰嶇疆 ####################
spring:
cloud:
nacos:
server-addr: ${NACOS_ADDR:172.17.16.7:8848}
username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos}
discovery:
namespace: ${NACOS_DISCOVERY_NAMESPACE:stage}
group: DEFAULT_GROUP
metadata:
version: 1.0.0
config:
namespace: ${NACOS_CONFIG_NAMESPACE:stage}
group: DEFAULT_GROUP
file-extension: yaml
refresh-enabled: true
--- #################### 鏁版嵁搴撶浉鍏抽厤缃?####################
spring:
datasource:
druid:
web-stat-filter:
enabled: true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: ${DRUID_USERNAME:admin}
login-password: ${DRUID_PASSWORD:admin}
filter:
stat:
enabled: true
log-slow-sql: true
slow-sql-millis: 100
merge-sql: true
wall:
config:
multi-statement-allow: true
dynamic:
druid:
initial-size: 5
min-idle: 10
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 600000
max-evictable-idle-time-millis: 1800000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
primary: master
datasource:
master:
url: jdbc:mysql://${MYSQL_HOST:172.17.16.8}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:aiot-platform-test}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
username: ${MYSQL_USER:root}
password: ${MYSQL_PASSWORD:}
slave:
lazy: true
url: jdbc:mysql://${MYSQL_SLAVE_HOST:${MYSQL_HOST:172.17.16.8}}:${MYSQL_SLAVE_PORT:${MYSQL_PORT:3306}}/${MYSQL_DATABASE:aiot-platform-test}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
username: ${MYSQL_SLAVE_USER:${MYSQL_USER:root}}
password: ${MYSQL_SLAVE_PASSWORD:${MYSQL_PASSWORD:}}
tdengine:
url: jdbc:TAOS-RS://${TDENGINE_HOST:172.17.16.7}:${TDENGINE_PORT:6041}/aiot_platform
driver-class-name: com.taosdata.jdbc.rs.RestfulDriver
username: ${TDENGINE_USERNAME:root}
password: ${TDENGINE_PASSWORD:taosdata}
druid:
validation-query: SELECT SERVER_STATUS()
data:
redis:
host: ${REDIS_HOST:172.17.16.7}
port: ${REDIS_PORT:6379}
database: ${REDIS_DATABASE:0}
password: ${REDIS_PASSWORD:}
timeout: 5000ms
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
--- #################### MQ 娑堟伅闃熷垪鐩稿叧閰嶇疆 ####################
rocketmq:
name-server: ${ROCKETMQ_NAMESRV_ADDR:124.222.218.198:9876}
producer:
group: ${spring.application.name}_PRODUCER
access-key: ${ROCKETMQ_ACCESS_KEY:}
secret-key: ${ROCKETMQ_SECRET_KEY:}
consumer:
access-key: ${ROCKETMQ_ACCESS_KEY:}
secret-key: ${ROCKETMQ_SECRET_KEY:}
spring:
# 绂佺敤 RabbitMQ 鑷姩閰嶇疆锛堝鏋滀笉闇€瑕?RabbitMQ锛岄伩鍏嶅惎鍔ㄦ椂杩炴帴澶辫触锛?
autoconfigure:
exclude:
- org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
# RabbitMQ 閰嶇疆锛堝凡绂佺敤鑷姩閰嶇疆锛屼粎淇濈暀閰嶇疆椤逛緵涓氬姟浠g爜浣跨敤锛?
# rabbitmq:
# host: ${RABBITMQ_HOST:127.0.0.1}
# port: ${RABBITMQ_PORT:5672}
# username: ${RABBITMQ_USERNAME:guest}
# password: ${RABBITMQ_PASSWORD:guest}
kafka:
bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:127.0.0.1:9092}
--- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 ####################
xxl:
job:
enabled: false
admin:
addresses: ${XXL_JOB_ADMIN_ADDRESSES:http://172.17.16.7:19090/xxl-job-admin}
executor:
ip: ${XXL_JOB_EXECUTOR_IP:}
port: ${XXL_JOB_EXECUTOR_PORT:9999}
--- #################### 鏈嶅姟淇濋殰鐩稿叧閰嶇疆 ####################
lock4j:
acquire-timeout: 3000
expire: 30000
--- #################### 鐩戞帶鐩稿叧閰嶇疆 ####################
management:
endpoints:
web:
base-path: /actuator
exposure:
include: '*'
spring:
boot:
admin:
client:
instance:
service-host-type: IP
username: ${SPRING_BOOT_ADMIN_USERNAME:admin}
password: ${SPRING_BOOT_ADMIN_PASSWORD:admin}
logging:
level:
root: INFO
com.viewsh: ${LOG_LEVEL:INFO}
com.viewsh.module.iot.dal.mysql: debug
com.viewsh.module.iot.dal.mysql.sms.SmsChannelMapper: INFO
org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR
file:
name: ${LOG_FILE_PATH:/app/logs}/${spring.application.name}.log
--- #################### 鑺嬮亾鐩稿叧閰嶇疆 ####################
viewsh:
demo: false
env:
tag: ${HOSTNAME:stage}
captcha:
enable: true
security:
mock-enable: false