8 Commit-ok 05de071485 ... fd532d6d84

Szerző SHA1 Üzenet Dátum
  李学强 fd532d6d84 广电回调消息 5 hónapja
  李学强 9f6089fb0d 网关更新 5 hónapja
  李学强 a7bc60e803 .. 5 hónapja
  李学强 197f8b7d33 订单推送 5 hónapja
  luofuwen 7f5140e2f2 修改打包 6 hónapja
  luofuwen b819ecb61d 镜像 TAG 修改逻辑 6 hónapja
  luofuwen dc8e5845dc 优化自动发布 8 hónapja
  luofuwen fd73d46501 来号吧迁移测试环境 8 hónapja

+ 420 - 343
.drone.yml

@@ -1,8 +1,8 @@
 #########################################################################################################
-# 1.打包构建lhb-gateway
+# 1.打包构建release-lhb-gateway
 kind: pipeline
 type: docker
-name: lhb-gateway-prod
+name: release-lhb-gateway
 
 volumes:
   - name: mvn_repo
@@ -13,7 +13,7 @@ volumes:
       path: /home/ABServer/config/mvn
   - name: build-artifacts
     host:
-      path: /home/ABServer/webroot/lhb-gateway
+      path: /home/ABServer/webroot/release-lhb-gateway
   - name: dockerfile-source
     host:
       path: /home/ABServer/config/docker
@@ -58,7 +58,7 @@ steps:
       - cp -v lhb-gateway/target/*.jar /context/
       - cp -rv lhb-gateway/target/lib /context/
       - cp -rv lhb-gateway/target/config /context/
-      - cp /dockerfiles/template-min.dockerfile /context/Dockerfile
+      - cp /dockerfiles/template-prod.dockerfile /context/Dockerfile
       - sed -i 's/{Xms}/1024m/g' /context/Dockerfile
       - sed -i 's/{Xmx}/1024m/g' /context/Dockerfile
       - sed -i 's/{ImageName}/lhb-gateway/g' /context/Dockerfile
@@ -84,7 +84,7 @@ steps:
     commands:
       - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
       - cd /context
-      - TAG=$(date +%Y%m%d%H%M%S)
+      - TAG=prod-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
       - docker build -t "harbor.kexiaoshuang.com/laihaoba/lhb-gateway:$TAG" .
       - docker push "harbor.kexiaoshuang.com/laihaoba/lhb-gateway:$TAG"
       - docker rmi "harbor.kexiaoshuang.com/laihaoba/lhb-gateway:$TAG"
@@ -94,12 +94,12 @@ trigger:
   branch: [ release-gateway ]
 
 #########################################################################################################
-#2.打包构建lhb-quartz-prod
+#2.打包构建release-lhb-quartz
 
 ---
 kind: pipeline
 type: docker
-name: lhb-quartz-prod
+name: release-lhb-quartz
 
 volumes:
   - name: mvn_repo
@@ -110,7 +110,7 @@ volumes:
       path: /home/ABServer/config/mvn
   - name: build-artifacts
     host:
-      path: /home/ABServer/webroot/lhb-quartz
+      path: /home/ABServer/webroot/release-lhb-quartz
   - name: dockerfile-source
     host:
       path: /home/ABServer/config/docker
@@ -155,9 +155,9 @@ steps:
       - cp -v lhb-quartz/target/*.jar /context/
       - cp -rv lhb-quartz/target/lib /context/
       - cp -rv lhb-quartz/target/config /context/
-      - cp /dockerfiles/template-min.dockerfile /context/Dockerfile
-      - sed -i 's/{Xms}/256m/g' /context/Dockerfile
-      - sed -i 's/{Xmx}/256m/g' /context/Dockerfile
+      - cp /dockerfiles/template-prod.dockerfile /context/Dockerfile
+      - sed -i 's/{Xms}/512m/g' /context/Dockerfile
+      - sed -i 's/{Xmx}/512m/g' /context/Dockerfile
       - sed -i 's/{ImageName}/lhb-quartz/g' /context/Dockerfile
       - echo -e "*\n!*.jar\n!lib/\n!config/\n!Dockerfile" > /context/.dockerignore
       - ls -alR /context
@@ -181,7 +181,7 @@ steps:
     commands:
       - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
       - cd /context
-      - TAG=$(date +%Y%m%d%H%M%S)
+      - TAG=prod-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
       - docker build -t "harbor.kexiaoshuang.com/laihaoba/lhb-quartz:$TAG" .
       - docker push "harbor.kexiaoshuang.com/laihaoba/lhb-quartz:$TAG"
       - docker rmi "harbor.kexiaoshuang.com/laihaoba/lhb-quartz:$TAG"
@@ -191,12 +191,12 @@ trigger:
   branch: [ release-quartz ]
 
 ###########################################################################################################
-# 3.打包构建lhb-system-prod
+# 3.打包构建release-lhb-system
 
 ---
 kind: pipeline
 type: docker
-name: lhb-system-prod
+name: release-lhb-system
 
 # 定义所有 Volume 映射
 volumes:
@@ -208,7 +208,7 @@ volumes:
       path: /home/ABServer/config/mvn
   - name: build-artifacts  # 构建产物临时目录
     host:
-      path: /home/ABServer/webroot/lhb-system
+      path: /home/ABServer/webroot/release-lhb-system
   - name: dockerfile-source
     host:
       path: /home/ABServer/config/docker
@@ -253,7 +253,7 @@ steps:
       - cp -v lhb-system/lhb-system-biz/target/*.jar /context/
       - cp -rv lhb-system/lhb-system-biz/target/lib /context/
       - cp -rv lhb-system/lhb-system-biz/target/config /context/
-      - cp /dockerfiles/template-biz-min.dockerfile /context/Dockerfile
+      - cp /dockerfiles/template-biz-prod.dockerfile /context/Dockerfile
       - sed -i 's/{Xms}/512m/g' /context/Dockerfile
       - sed -i 's/{Xmx}/512m/g' /context/Dockerfile
       - sed -i 's/{ImageName}/lhb-system/g' /context/Dockerfile
@@ -280,7 +280,7 @@ steps:
     commands:
       - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
       - cd /context
-      - TAG=$(date +%Y%m%d%H%M%S)
+      - TAG=prod-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
       - docker build -t "harbor.kexiaoshuang.com/laihaoba/lhb-system:$TAG" .
       - docker push "harbor.kexiaoshuang.com/laihaoba/lhb-system:$TAG"
       - docker rmi "harbor.kexiaoshuang.com/laihaoba/lhb-system:$TAG"
@@ -291,12 +291,12 @@ trigger:
 
 
 ##########################################################################################################
-# 4.打包构建lhb-basic
+# 4.打包构建release-lhb-basic
 
 ---
 kind: pipeline
 type: docker
-name: lhb-basic-prod
+name: release-lhb-basic
 
 # 定义所有 Volume 映射
 volumes:
@@ -308,7 +308,7 @@ volumes:
       path: /home/ABServer/config/mvn
   - name: build-artifacts  # 构建产物临时目录
     host:
-      path: /home/ABServer/webroot/lhb-basic
+      path: /home/ABServer/webroot/release-lhb-basic
   - name: dockerfile-source
     host:
       path: /home/ABServer/config/docker
@@ -353,7 +353,7 @@ steps:
       - cp -v lhb-basic/lhb-basic-biz/target/*.jar /context/
       - cp -rv lhb-basic/lhb-basic-biz/target/lib /context/
       - cp -rv lhb-basic/lhb-basic-biz/target/config /context/
-      - cp /dockerfiles/template-biz-min.dockerfile /context/Dockerfile
+      - cp /dockerfiles/template-biz-prod.dockerfile /context/Dockerfile
       - sed -i 's/{Xms}/512m/g' /context/Dockerfile
       - sed -i 's/{Xmx}/512m/g' /context/Dockerfile
       - sed -i 's/{ImageName}/lhb-basic/g' /context/Dockerfile
@@ -380,7 +380,7 @@ steps:
     commands:
       - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
       - cd /context
-      - TAG=$(date +%Y%m%d%H%M%S)
+      - TAG=prod-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
       - docker build -t "harbor.kexiaoshuang.com/laihaoba/lhb-basic:$TAG" .
       - docker push "harbor.kexiaoshuang.com/laihaoba/lhb-basic:$TAG"
       - docker rmi "harbor.kexiaoshuang.com/laihaoba/lhb-basic:$TAG"
@@ -389,402 +389,479 @@ trigger:
   event: [ push ]
   branch: [ release-basic ]
 #############################################################################################
+#                                                                                           #
+#                                                                                           #
+#                                                                                           #
+#                                                                                           #
+#                                                                                           #
+#############################################################################################
 # 测试分支打包
-
-# 1.lhb-gateway-test
+# 1.打包构建test-lhb-gateway
 ---
 kind: pipeline
 type: docker
-name: lhb-gateway-test
+name: test-lhb-gateway
 
-volumes: # 声明数据卷
-  - name: mvn_repo # 数据卷名称
-    # Host Volume, 挂载到宿主机上的卷轴
+# 定义所有Volume映射
+volumes:
+  - name: mvn_repo
     host:
-      # 宿主机的绝对路径
-      path: /home/ABServer/cache/mvn_repo
+      path: /home/ABServer/drone/cache/mvn_repo
   - name: mvn_config
     host:
-      path: /home/ABServer/config/mvn/
-  - name: targetDir
+      path: /home/ABServer/drone/config/mvn
+  - name: build-artifacts
+    host:
+      path: /home/ABServer/drone/webroot/test-lhb-gateway
+  - name: dockerfile-source
+    host:
+      path: /home/ABServer/drone/config/docker
+  - name: timezone
+    host:
+      path: /etc/localtime
+  - name: docker-socket
+    host:
+      path: /var/run/docker.sock
+  - name: delpoyment
     host:
-      path: /lhb-gateway
+      path: /home/ABServer/drone/config/shell
 
 clone:
-  disable: false # 启用代码拉取
+  disable: false
 
 steps:
+  # 阶段1: Maven构建
   - name: build-project
     image: maven:3.9.4-amazoncorretto-17
     pull: if-not-exists
-    depends_on: [clone] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: mvn_repo # 数据卷名称
-        path: /usr/share/maven/repo # 容器内目录 绝对路径
-      - name: targetDir
-        path: /drone/src/dist/
+    volumes:
+      - name: mvn_repo
+        path: /usr/share/maven/repo
       - name: mvn_config
-        path: /usr/share/maven/conf/
-    commands: # 执行命令
-      - rm -rf /drone/src/dist/*
+        path: /usr/share/maven/conf
+    commands:
       - mvn clean package -Dmaven.test.skip=true -P test
-      - cp /drone/src/lhb-gateway/target/*.jar /drone/src/dist/ && cp -r /drone/src/lhb-gateway/target/lib /drone/src/dist/ && cp -r /drone/src/lhb-gateway/target/config /drone/src/dist/ # 复制文件
-    when:
-      status:
-        - success # 当前步骤成功时执行
-  - name: scp-project
-    image: appleboy/drone-scp
-    pull: if-not-exists
-    depends_on: [build-project] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: targetDir # 数据卷名称
-        path: /lhb-gateway # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: host
-      username:
-        from_secret: username
-      password:
-        from_secret: userpwd
-      port: 22
-      command_timeout: 2m
-      target: /home/ABServer/deploy-ready/
-      source:
-        - echo ====开始拷贝=======
-        - /lhb-gateway/*.jar
-        - /lhb-gateway/lib
-        - /lhb-gateway/config
-        - echo ====结束拷贝=======
-      when:
-        status:
-          - success # 当前步骤成功时执行
-
-  - name: deploy-project
-    image: appleboy/drone-ssh
-    pull: if-not-exists
-    depends_on: [scp-project] # 依赖的步骤
-    settings:
-      host:
-        from_secret: host
-      username:
-        from_secret: username
-      password:
-        from_secret: userpwd
-      port: 22
-      command_timeout: 2m
-      script:
-        - echo ====开始部署=======
-        - cd /home/ABServer/
-        - cp -r /home/ABServer/deploy-ready/lhb-gateway /home/ABServer/webroot/
-        - docker stop lhb-gateway && docker rm lhb-gateway && docker-compose up -d lhb-gateway
-        # - docker restart nodeServer1
-        - echo ====部署成功=======
+      - echo "===== 构建产物验证 ====="
+      - ls -l lhb-gateway/target/*.jar
+      - '[ -d lhb-gateway/target/lib ] || exit 1'
+      - '[ -d lhb-gateway/target/config ] || exit 1'
+
+  # 阶段2: 准备Docker上下文
+  - name: prepare-docker-context
+    image: alpine:3.21.3
+    depends_on: [ build-project ]
+    volumes:
+      - name: build-artifacts
+        path: /context
+      - name: dockerfile-source
+        path: /dockerfiles
+    commands:
+      - rm -rf /context/*
+      - cp -v lhb-gateway/target/*.jar /context/
+      - cp -rv lhb-gateway/target/lib /context/
+      - cp -rv lhb-gateway/target/config /context/
+      - cp /dockerfiles/template-test.dockerfile /context/Dockerfile
+      - sed -i 's/{Xms}/512m/g' /context/Dockerfile
+      - sed -i 's/{Xmx}/512m/g' /context/Dockerfile
+      - sed -i 's/{ImageName}/lhb-gateway/g' /context/Dockerfile
+      - echo -e "*\n!*.jar\n!lib/\n!config/\n!Dockerfile" > /context/.dockerignore
+      - ls -alR /context
+
+  # 阶段3: 构建并推送镜像
+  - name: docker-build-push
+    image: docker:24.0-cli
+    depends_on: [ prepare-docker-context ]
+    volumes:
+      - name: build-artifacts
+        path: /context
+      - name: timezone
+        path: /etc/localtime
+      - name: docker-socket
+        path: /var/run/docker.sock
+      - name: delpoyment
+        path: /home
+    environment:
+      HARBOR_USER:
+        from_secret: harbor_robot
+      HARBOR_PASS:
+        from_secret: harbor_token
+    commands:
+      - cd /context
+      - TAG=test-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
+      - echo "$TAG" > /home/TAG.txt
+      - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
+      - docker build -t "harbor.kexiaoshuang.com/test/lhb-gateway:$TAG" .
+      - docker push "harbor.kexiaoshuang.com/test/lhb-gateway:$TAG"
+      - docker rmi "harbor.kexiaoshuang.com/test/lhb-gateway:$TAG"
+
+  # 阶段四:测试环境部署服务
+  - name: trigger-deploy
+    image: curlimages/curl:latest
+    depends_on: [ docker-build-push ]
+    volumes:
+      - name: delpoyment
+        path: /shared
+    commands:
+      - TAG=$(cat /shared/TAG.txt)
+      - echo "TAG=$TAG"
+      - cd /shared
+      - sh /shared/trigger-deploy.sh $TAG lhb-gateway laihaoba
+
 
 trigger:
-  branch:
-    include:
-      - test-gateway
-  event:
-    include:
-      - pull_request
-      - push
-############################################################################################
+  event: [ push ]
+  branch: [ test-gateway ]
+
+#########################################################################################################
+#2.打包构建test-lhb-quartz
 
 ---
 kind: pipeline
 type: docker
-name: lhb-quartz-test
+name: test-lhb-quartz
 
-volumes: # 声明数据卷
-  - name: mvn_repo # 数据卷名称
-    # Host Volume, 挂载到宿主机上的卷轴
+volumes:
+  - name: mvn_repo
     host:
-      # 宿主机的绝对路径
-      path: /home/ABServer/cache/mvn_repo
+      path: /home/ABServer/drone/cache/mvn_repo
   - name: mvn_config
     host:
-      path: /home/ABServer/config/mvn/
-  - name: targetDir
+      path: /home/ABServer/drone/config/mvn
+  - name: build-artifacts
     host:
-      path: /lhb-quartz
+      path: /home/ABServer/drone/webroot/test-lhb-quartz
+  - name: dockerfile-source
+    host:
+      path: /home/ABServer/drone/config/docker
+  - name: timezone
+    host:
+      path: /etc/localtime
+  - name: docker-socket
+    host:
+      path: /var/run/docker.sock
+  - name: delpoyment
+    host:
+      path: /home/ABServer/drone/config/shell
 
 clone:
-  disable: false # 启用代码拉取
+  disable: false
 
 steps:
+  # 阶段1: Maven构建
   - name: build-project
     image: maven:3.9.4-amazoncorretto-17
     pull: if-not-exists
-    depends_on: [clone] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: mvn_repo # 数据卷名称
-        path: /usr/share/maven/repo # 容器内目录 绝对路径
-      - name: targetDir
-        path: /drone/src/dist/
+    volumes:
+      - name: mvn_repo
+        path: /usr/share/maven/repo
       - name: mvn_config
-        path: /usr/share/maven/conf/
-    commands: # 执行命令
-      - rm -rf /drone/src/dist/*
+        path: /usr/share/maven/conf
+    commands:
       - mvn clean package -Dmaven.test.skip=true -P test
-      - cp /drone/src/lhb-quartz/target/*.jar /drone/src/dist/ && cp -r /drone/src/lhb-quartz/target/lib /drone/src/dist/ && cp -r /drone/src/lhb-quartz/target/config /drone/src/dist/ # 复制文件
-    when:
-      status:
-        - success # 当前步骤成功时执行
-  - name: scp-project
-    image: appleboy/drone-scp
-    pull: if-not-exists
-    depends_on: [build-project] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: targetDir # 数据卷名称
-        path: /lhb-quartz # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: host
-      username:
-        from_secret: username
-      password:
-        from_secret: userpwd
-      port: 22
-      command_timeout: 2m
-      target: /home/ABServer/deploy-ready/
-      source:
-        - echo ====开始拷贝=======
-        - /lhb-quartz/*.jar
-        - /lhb-quartz/lib
-        - /lhb-quartz/config
-        - echo ====结束拷贝=======
-      when:
-        status:
-          - success # 当前步骤成功时执行
-
-  - name: deploy-project
-    image: appleboy/drone-ssh
-    pull: if-not-exists
-    depends_on: [scp-project] # 依赖的步骤
-    settings:
-      host:
-        from_secret: host
-      username:
-        from_secret: username
-      password:
-        from_secret: userpwd
-      port: 22
-      command_timeout: 2m
-      script:
-        - echo ====开始部署=======
-        - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-quartz/*
-        - cp -r /home/ABServer/deploy-ready/lhb-quartz /home/ABServer/webroot/
-        - docker restart lhb-quartz
-        - rm -rf /home/ABServer/deploy-ready/lhb-quartz/*
-        # - docker restart nodeServer1
-        - echo ====部署成功=======
+      - echo "===== 构建产物验证 ====="
+      - ls -l lhb-quartz/target/*.jar
+      - '[ -d lhb-quartz/target/lib ] || exit 1'
+      - '[ -d lhb-quartz/target/config ] || exit 1'
+
+  # 阶段2: 准备Docker上下文(关键修正部分)
+  - name: prepare-docker-context
+    image: alpine:3.21.3
+    depends_on: [ build-project ]
+    volumes:
+      - name: build-artifacts
+        path: /context
+      - name: dockerfile-source
+        path: /dockerfiles
+    commands:
+      - rm -rf /context/*
+      - cp -v lhb-quartz/target/*.jar /context/
+      - cp -rv lhb-quartz/target/lib /context/
+      - cp -rv lhb-quartz/target/config /context/
+      - cp /dockerfiles/template-test.dockerfile /context/Dockerfile
+      - sed -i 's/{Xms}/256m/g' /context/Dockerfile
+      - sed -i 's/{Xmx}/256m/g' /context/Dockerfile
+      - sed -i 's/{ImageName}/lhb-quartz/g' /context/Dockerfile
+      - echo -e "*\n!*.jar\n!lib/\n!config/\n!Dockerfile" > /context/.dockerignore
+      - echo "=============构建上下文文件列表==============="
+      - ls -alR /context
+
+  # 阶段3: 构建并推送镜像
+  - name: docker-build-push
+    image: docker:24.0-cli
+    depends_on: [ prepare-docker-context ]
+    volumes:
+      - name: build-artifacts
+        path: /context
+      - name: timezone
+        path: /etc/localtime
+      - name: docker-socket
+        path: /var/run/docker.sock
+      - name: delpoyment
+        path: /home
+    environment:
+      HARBOR_USER:
+        from_secret: harbor_robot
+      HARBOR_PASS:
+        from_secret: harbor_token
+    commands:
+      - cd /context
+      - TAG=test-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
+      - echo "$TAG" > /home/TAG.txt
+      - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
+      - docker build -t "harbor.kexiaoshuang.com/test/lhb-quartz:$TAG" .
+      - docker push "harbor.kexiaoshuang.com/test/lhb-quartz:$TAG"
+      - docker rmi "harbor.kexiaoshuang.com/test/lhb-quartz:$TAG"
+
+  # 阶段四:测试环境部署服务
+  - name: trigger-deploy
+    image: curlimages/curl:latest
+    depends_on: [ docker-build-push ]
+    volumes:
+      - name: delpoyment
+        path: /shared
+    commands:
+      - TAG=$(cat /shared/TAG.txt)
+      - echo "TAG=$TAG"
+      - cd /shared
+      - sh /shared/trigger-deploy.sh $TAG lhb-quartz laihaoba
+
 
 trigger:
-  branch:
-    include:
-      - test-quartz
-  event:
-    include:
-      - pull_request
-      - push
-
-############################################################################################
+  event: [ push ]
+  branch: [ test-quartz ]
+
+###########################################################################################################
+# 3.打包构建test-lhb-system
 ---
 kind: pipeline
 type: docker
-name: lhb-system-test
+name: test-lhb-system
 
-volumes: # 声明数据卷
-  - name: mvn_repo # 数据卷名称
-    # Host Volume, 挂载到宿主机上的卷轴
+# 定义所有 Volume 映射
+volumes:
+  - name: mvn_repo
     host:
-      # 宿主机的绝对路径
-      path: /home/ABServer/cache/mvn_repo
+      path: /home/ABServer/drone/cache/mvn_repo
   - name: mvn_config
     host:
-      path: /home/ABServer/config/mvn/
-  - name: targetDir
+      path: /home/ABServer/drone/config/mvn
+  - name: build-artifacts  # 构建产物临时目录
+    host:
+      path: /home/ABServer/drone/webroot/test-lhb-system
+  - name: dockerfile-source
+    host:
+      path: /home/ABServer/drone/config/docker
+  - name: timezone
     host:
-      path: /lhb-system
+      path: /etc/localtime
+  - name: docker-socket
+    host:
+      path: /var/run/docker.sock
+  - name: delpoyment
+    host:
+      path: /home/ABServer/drone/config/shell
 
 clone:
-  disable: false # 启用代码拉取
+  disable: false
 
 steps:
+  # 阶段1: Maven 构建
   - name: build-project
     image: maven:3.9.4-amazoncorretto-17
     pull: if-not-exists
-    depends_on: [clone] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: mvn_repo # 数据卷名称
-        path: /usr/share/maven/repo # 容器内目录 绝对路径
-      - name: targetDir
-        path: /drone/src/lhb/dist/
+    volumes:
+      - name: mvn_repo
+        path: /usr/share/maven/repo
       - name: mvn_config
-        path: /usr/share/maven/conf/
-    commands: # 执行命令
-      - rm -rf /drone/src/lhb/dist/*
+        path: /usr/share/maven/conf
+    commands:
       - mvn clean package -Dmaven.test.skip=true -P test
-      - cp /drone/src/lhb-system/lhb-system-biz/target/*.jar /drone/src/lhb/dist/ && cp -r /drone/src/lhb-system/lhb-system-biz/target/lib /drone/src/lhb/dist/ && cp -r /drone/src/lhb-system/lhb-system-biz/target/config /drone/src/lhb/dist/ # 复制文件
-    when:
-      status:
-        - success # 当前步骤成功时执行
-  - name: scp-project
-    image: appleboy/drone-scp
-    pull: if-not-exists
-    depends_on: [build-project] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: targetDir # 数据卷名称
-        path: /lhb-system # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: host
-      username:
-        from_secret: username
-      password:
-        from_secret: userpwd
-      port: 22
-      command_timeout: 2m
-      target: /home/ABServer/deploy-ready/
-      source:
-        - echo ====开始拷贝=======
-        - /lhb-system/*.jar
-        - /lhb-system/lib
-        - /lhb-system/config
-        - echo ====结束拷贝=======
-      when:
-        status:
-          - success # 当前步骤成功时执行
-
-  - name: deploy-project
-    image: appleboy/drone-ssh
-    pull: if-not-exists
-    depends_on: [scp-project] # 依赖的步骤
-    settings:
-      host:
-        from_secret: host
-      username:
-        from_secret: username
-      password:
-        from_secret: userpwd
-      port: 22
-      command_timeout: 2m
-      script:
-        - echo ====开始部署=======
-        - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-system/*
-        - cp -r /home/ABServer/deploy-ready/lhb-system /home/ABServer/webroot/
-        - docker stop lhb-system && docker rm lhb-system && docker-compose up -d lhb-system
-        - rm -rf /home/ABServer/deploy-ready/lhb-system/*
-        # - docker restart nodeServer1
-        - echo ====部署成功=======
+      - echo "===== 构建产物生成验证 ====="
+      - ls -l lhb-system/lhb-system-biz/target/*.jar
+      - '[ -d lhb-system/lhb-system-biz/target/lib ] || exit 1'
+      - '[ -d lhb-system/lhb-system-biz/target/config ] || exit 1'
+
+  # 阶段2: 准备 Docker 构建上下文
+  - name: prepare-docker-context
+    image: alpine:3.21.3
+    depends_on: [ build-project ]
+    volumes:
+      - name: build-artifacts
+        path: /context
+      - name: dockerfile-source
+        path: /dockerfiles
+    commands:
+      - rm -rf /context/*
+      - cp -v lhb-system/lhb-system-biz/target/*.jar /context/
+      - cp -rv lhb-system/lhb-system-biz/target/lib /context/
+      - cp -rv lhb-system/lhb-system-biz/target/config /context/
+      - cp /dockerfiles/template-biz-test.dockerfile /context/Dockerfile
+      - sed -i 's/{Xms}/512m/g' /context/Dockerfile
+      - sed -i 's/{Xmx}/512m/g' /context/Dockerfile
+      - sed -i 's/{ImageName}/lhb-system/g' /context/Dockerfile
+      - echo -e "*\n!*.jar\n!lib/\n!config/\n!Dockerfile" > /context/.dockerignore
+      - echo "===== 构建上下文文件列表 ====="
+      - ls -laR /context
+
+  # 阶段3: 构建并推送镜像
+  - name: docker-build-push
+    image: docker:24.0-cli
+    depends_on: [ prepare-docker-context ]
+    volumes:
+      - name: build-artifacts
+        path: /context
+      - name: timezone
+        path: /etc/localtime
+      - name: docker-socket
+        path: /var/run/docker.sock
+      - name: delpoyment
+        path: /home
+    environment:
+      HARBOR_USER:
+        from_secret: harbor_robot
+      HARBOR_PASS:
+        from_secret: harbor_token
+    commands:
+      - cd /context
+      - TAG=test-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
+      - echo "$TAG" > /home/TAG.txt
+      - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
+      - docker build -t "harbor.kexiaoshuang.com/test/lhb-system:$TAG" .
+      - docker push "harbor.kexiaoshuang.com/test/lhb-system:$TAG"
+      - docker rmi "harbor.kexiaoshuang.com/test/lhb-system:$TAG"
+
+  # 阶段四:测试环境部署服务
+  - name: trigger-deploy
+    image: curlimages/curl:latest
+    depends_on: [ docker-build-push ]
+    volumes:
+      - name: delpoyment
+        path: /shared
+    commands:
+      - TAG=$(cat /shared/TAG.txt)
+      - echo "TAG=$TAG"
+      - cd /shared
+      - sh /shared/trigger-deploy.sh $TAG lhb-system laihaoba 
 
 trigger:
-  branch:
-    include:
-      - test-system
-  event:
-    include:
-      - pull_request
-      - push
-
-############################################################################################
+  event: [ push ]
+  branch: [ test-system ]
+
+
+##########################################################################################################
+# 4.打包构建test-lhb-basic
+
 ---
 kind: pipeline
 type: docker
-name: lhb-basic-test
+name: test-lhb-basic
 
-volumes: # 声明数据卷
-  - name: mvn_repo # 数据卷名称
-    # Host Volume, 挂载到宿主机上的卷轴
+# 定义所有 Volume 映射
+volumes:
+  - name: mvn_repo
     host:
-      # 宿主机的绝对路径
-      path: /home/ABServer/cache/mvn_repo
+      path: /home/ABServer/drone/cache/mvn_repo
   - name: mvn_config
     host:
-      path: /home/ABServer/config/mvn/
-  - name: targetDir
+      path: /home/ABServer/drone/config/mvn
+  - name: build-artifacts  # 构建产物临时目录
     host:
-      path: /lhb-basic
+      path: /home/ABServer/drone/webroot/test-lhb-basic
+  - name: dockerfile-source
+    host:
+      path: /home/ABServer/drone/config/docker
+  - name: timezone
+    host:
+      path: /etc/localtime
+  - name: docker-socket
+    host:
+      path: /var/run/docker.sock
+  - name: delpoyment
+    host:
+      path: /home/ABServer/drone/config/shell
 
 clone:
-  disable: false # 启用代码拉取
+  disable: false
 
 steps:
+  # 阶段1: Maven 构建
   - name: build-project
     image: maven:3.9.4-amazoncorretto-17
     pull: if-not-exists
-    depends_on: [clone] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: mvn_repo # 数据卷名称
-        path: /usr/share/maven/repo # 容器内目录 绝对路径
-      - name: targetDir
-        path: /drone/src/lhb/dist/
+    volumes:
+      - name: mvn_repo
+        path: /usr/share/maven/repo
       - name: mvn_config
-        path: /usr/share/maven/conf/
-    commands: # 执行命令
-      - rm -rf /drone/src/lhb/dist/*
+        path: /usr/share/maven/conf
+    commands:
       - mvn clean package -Dmaven.test.skip=true -P test
-      - cp /drone/src/lhb-basic/lhb-basic-biz/target/*.jar /drone/src/lhb/dist/ && cp -r /drone/src/lhb-basic/lhb-basic-biz/target/lib /drone/src/lhb/dist/ && cp -r /drone/src/lhb-basic/lhb-basic-biz/target/config /drone/src/lhb/dist/ # 复制文件
-    when:
-      status:
-        - success # 当前步骤成功时执行
-  - name: scp-project
-    image: appleboy/drone-scp
-    pull: if-not-exists
-    depends_on: [build-project] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: targetDir # 数据卷名称
-        path: /lhb-basic # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: host
-      username:
-        from_secret: username
-      password:
-        from_secret: userpwd
-      port: 22
-      command_timeout: 2m
-      target: /home/ABServer/deploy-ready/
-      source:
-        - echo ====开始拷贝=======
-        - /lhb-basic/*.jar
-        - /lhb-basic/lib
-        - /lhb-basic/config
-        - echo ====结束拷贝=======
-      when:
-        status:
-          - success # 当前步骤成功时执行
-
-  - name: deploy-project
-    image: appleboy/drone-ssh
-    pull: if-not-exists
-    depends_on: [scp-project] # 依赖的步骤
-    settings:
-      host:
-        from_secret: host
-      username:
-        from_secret: username
-      password:
-        from_secret: userpwd
-      port: 22
-      command_timeout: 2m
-      script:
-        - echo ====开始部署=======
-        - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-basic/*
-        - cp -r /home/ABServer/deploy-ready/lhb-basic /home/ABServer/webroot/
-        - docker stop lhb-basic && docker rm lhb-basic && docker-compose up -d lhb-basic
-        - rm -rf /home/ABServer/deploy-ready/lhb-basic/*
-        # - docker restart nodeServer1
-        - echo ====部署成功=======
+      - echo "===== 构建产物生成验证 ====="
+      - ls -l lhb-basic/lhb-basic-biz/target/*.jar
+      - '[ -d lhb-basic/lhb-basic-biz/target/lib ] || exit 1'
+      - '[ -d lhb-basic/lhb-basic-biz/target/config ] || exit 1'
+
+  # 阶段2: 准备 Docker 构建上下文
+  - name: prepare-docker-context
+    image: alpine:3.21.3
+    depends_on: [ build-project ]
+    volumes:
+      - name: build-artifacts
+        path: /context
+      - name: dockerfile-source
+        path: /dockerfiles
+    commands:
+      - rm -rf /context/*
+      - cp -v lhb-basic/lhb-basic-biz/target/*.jar /context/
+      - cp -rv lhb-basic/lhb-basic-biz/target/lib /context/
+      - cp -rv lhb-basic/lhb-basic-biz/target/config /context/
+      - cp /dockerfiles/template-biz-test.dockerfile /context/Dockerfile
+      - sed -i 's/{Xms}/512m/g' /context/Dockerfile
+      - sed -i 's/{Xmx}/512m/g' /context/Dockerfile
+      - sed -i 's/{ImageName}/lhb-basic/g' /context/Dockerfile
+      - echo -e "*\n!*.jar\n!lib/\n!config/\n!Dockerfile" > /context/.dockerignore
+      - echo "===== 构建上下文文件列表 ====="
+      - ls -laR /context
+
+  # 阶段3: 构建并推送镜像
+  - name: docker-build-push
+    image: docker:24.0-cli
+    depends_on: [ prepare-docker-context ]
+    volumes:
+      - name: build-artifacts
+        path: /context
+      - name: timezone
+        path: /etc/localtime
+      - name: docker-socket
+        path: /var/run/docker.sock
+      - name: delpoyment
+        path: /home
+    environment:
+      HARBOR_USER:
+        from_secret: harbor_robot
+      HARBOR_PASS:
+        from_secret: harbor_token
+    commands:
+      - cd /context
+      - TAG=test-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
+      - echo "$TAG" > /home/TAG.txt
+      - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
+      - docker build -t "harbor.kexiaoshuang.com/test/lhb-basic:$TAG" .
+      - docker push "harbor.kexiaoshuang.com/test/lhb-basic:$TAG"
+      - docker rmi "harbor.kexiaoshuang.com/test/lhb-basic:$TAG"
+
+  # 阶段四:测试环境部署服务
+  - name: trigger-deploy
+    image: curlimages/curl:latest
+    depends_on: [ docker-build-push ]
+    volumes:
+      - name: delpoyment
+        path: /shared
+    commands:
+      - TAG=$(cat /shared/TAG.txt)
+      - echo "TAG=$TAG"
+      - cd /shared
+      - sh /shared/trigger-deploy.sh $TAG lhb-basic laihaoba
 
 trigger:
-  branch:
-    include:
-      - test-basic
-  event:
-    include:
-      - pull_request
-      - push
+  event: [ push ]
+  branch: [ test-basic ]

+ 61 - 0
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/dto/tongyi/OrderInfoNotify.java

@@ -0,0 +1,61 @@
+package com.kxs.lhb.basic.api.dto.tongyi;
+
+import lombok.Data;
+
+/**
+ * @author lixueqiang
+ */
+@Data
+public class OrderInfoNotify {
+
+    private OrderInfo orderInfo;
+    private OrderDetail orderDetail;
+    private OrderRecvAddr orderRecvAddr;
+    private OrderLogistics orderLogistics;
+
+
+    @Data
+    public static class OrderInfo {
+
+        private String orderId;
+        private String orderType;
+        private String orderStatus;
+        private String orderActProcState;
+        private String orderActId;
+        private String orderPreferentialSum;
+        private String orderPaySum;
+        private String createTime;
+        private String finishTime;
+        private String userId;
+        private String userName;
+        private String payStatus;
+        private String payWay;
+        private String phone;
+        private String agentPrivateCode;
+    }
+
+    @Data
+    public static class OrderDetail{
+        private String goodsName;
+        private String goodsDesc;
+    }
+
+    @Data
+    public static class  OrderRecvAddr{
+        private String receiveName;
+        private String receiveCountry;
+        private String receiveProvince;
+        private String receiveCity;
+        private String receiveAddress;
+        private String receiveMobile;
+        private String receiveCounty;
+    }
+
+    @Data
+    public static class OrderLogistics{
+        private String logisticsName;
+        private String logisticsNum;
+
+    }
+}
+

+ 28 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/controller/cusmoter/callback/CallbackController.java

@@ -0,0 +1,28 @@
+package com.kxs.lhb.basic.biz.controller.cusmoter.callback;
+
+import com.kxs.common.core.util.R;
+import com.kxs.common.security.annotation.Inner;
+import com.kxs.lhb.basic.api.dto.tongyi.OrderInfoNotify;
+import com.kxs.lhb.basic.biz.service.LhbOrderService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author lixueqiang
+ */
+@RestController
+@RequestMapping("callback")
+@RequiredArgsConstructor
+public class CallbackController {
+
+    private final LhbOrderService orderService;
+
+    @Inner(value = false)
+    @RequestMapping("/lhb/notify")
+    public R notify(@RequestBody OrderInfoNotify param) {
+
+        return R.ok(orderService.tongyiNotify(param));
+    }
+}

+ 3 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/LhbOrderService.java

@@ -2,6 +2,7 @@ package com.kxs.lhb.basic.biz.service;
 
 import com.github.yulichang.base.MPJBaseService;
 import com.kxs.lhb.basic.api.constant.enums.NotifyStatusEnum;
+import com.kxs.lhb.basic.api.dto.tongyi.OrderInfoNotify;
 import com.kxs.lhb.basic.api.model.LhbOrder;
 import com.kxs.lhb.basic.api.vo.admin.sysOrder.QueryLogisticsVO;
 
@@ -52,5 +53,7 @@ public interface LhbOrderService extends MPJBaseService<LhbOrder> {
     LhbOrder getOrderSn(String orderSn);
 
     void sendToOrder(LhbOrder order, NotifyStatusEnum notifyStatusEnum);
+
+    Object tongyiNotify(OrderInfoNotify param);
 }
 

+ 44 - 0
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbOrderServiceImpl.java

@@ -22,8 +22,10 @@ import com.kxs.common.pay.factory.PaymentFactory;
 import com.kxs.common.pay.model.*;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.lhb.basic.api.amqp.RabbitOrderTimeoutQueueMQ;
+import com.kxs.lhb.basic.api.constant.enums.ChannelCodeEnum;
 import com.kxs.lhb.basic.api.constant.enums.NotifyStatusEnum;
 import com.kxs.lhb.basic.api.constant.enums.OrderStatusEnum;
+import com.kxs.lhb.basic.api.dto.tongyi.OrderInfoNotify;
 import com.kxs.lhb.basic.api.dto.tongyi.QueryOrderReq;
 import com.kxs.lhb.basic.api.model.*;
 import com.kxs.lhb.basic.api.vo.admin.sysOrder.QueryLogisticsVO;
@@ -416,6 +418,48 @@ public class LhbOrderServiceImpl extends MPJBaseServiceImpl<LhbOrderMapper, LhbO
         notifyService.bindPush(bindNotify, order.getIsvNo());
     }
 
+    @Override
+    public Object tongyiNotify(OrderInfoNotify param) {
+
+        log.info("收到广电统一订单消息:{}", JSONUtil.toJsonStr(param));
+        LhbOrder order = getOrderSn(param.getOrderInfo().getOrderId());
+        if(order == null){
+            order = new LhbOrder();
+            order.setOrderSn(param.getOrderInfo().getOrderId());
+            order.setAddress(param.getOrderRecvAddr().getReceiveAddress());
+            order.setArea(param.getOrderRecvAddr().getReceiveProvince() + StrUtil.COMMA + param.getOrderRecvAddr().getReceiveCity() + StrUtil.COMMA + param.getOrderRecvAddr().getReceiveCountry());
+            order.setContMobile(param.getOrderRecvAddr().getReceiveMobile());
+            order.setCustName(param.getOrderInfo().getUserName());
+            order.setIfCode(ChannelCodeEnum.TY.getCode());
+            order.setOutOrderSn(param.getOrderInfo().getOrderId());
+            order.setMakeMobile(param.getOrderInfo().getPhone());
+            String[] split = param.getOrderInfo().getAgentPrivateCode().split("KXS");
+            order.setIsvNo(split[0]);
+            order.setEmployNum(split[1]);
+            order.setPackageName(param.getOrderDetail().getGoodsName());
+            order.setExpressNo(param.getOrderLogistics().getLogisticsNum());
+            order.setStatus(Integer.valueOf(param.getOrderInfo().getPayStatus()));
+            order.setOutStatus(Integer.valueOf(param.getOrderInfo().getOrderStatus()));
+        }
+        order.insertOrUpdate();
+        //更新状态
+        if(order.getOutStatus() == 2){
+            sendToOrder(order,  NotifyStatusEnum.ACT);
+        }
+        if(order.getOutStatus() == 1 || order.getOutStatus() == 4){
+            sendToOrder(order,  NotifyStatusEnum.DISTRIBUTION);
+        }
+        if(order.getOutStatus() == 3 || order.getOutStatus() == 6){
+            sendToOrder(order, NotifyStatusEnum.CANCEL);
+            order.setStatus(OrderStatusEnum.CANCEL.getCode());
+        }
+        order.insertOrUpdate();
+        return "{\n" +
+                "    \"respDesc\": \"调用成功\",\n" +
+                "    \"respCode\": \"000000\"\n" +
+                "}";
+    }
+
 
 }
 

+ 2 - 2
lhb-basic/lhb-basic-biz/src/main/resources/application-test.yml

@@ -5,13 +5,13 @@ spring:
       username: @nacos.username@
       password: @nacos.password@
       discovery:
-        server-addr: ${NACOS_HOST:kxs-register}:${NACOS_PORT:8848}
+        server-addr: nacos.default.svc.cluster.local:8848
         namespace: ca8c56b2-d022-4f75-8aaa-6e50ab3ec212
         watch:
           enabled: true
         watch-delay: 1000
       config:
-        server-addr: ${spring.cloud.nacos.discovery.server-addr}
+        server-addr: nacos.default.svc.cluster.local:8848
         namespace: ca8c56b2-d022-4f75-8aaa-6e50ab3ec212
   config:
     import:

+ 10 - 0
lhb-gateway/src/main/java/com/kxs/gateway/api/filter/RequestDecoderFilter.java

@@ -23,8 +23,10 @@ import org.springframework.http.MediaType;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
 import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.util.AntPathMatcher;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.util.PathMatcher;
 import org.springframework.web.reactive.function.server.HandlerStrategies;
 import org.springframework.web.reactive.function.server.ServerRequest;
 import org.springframework.web.server.ServerWebExchange;
@@ -66,6 +68,9 @@ public class RequestDecoderFilter extends AbstractGatewayFilterFactory<Object> {
 
     private static final List<String> FILE_TYPES = List.of("multipart/form-data");
 
+
+    private final PathMatcher pathMatcher = new AntPathMatcher();
+
     @Override
     public GatewayFilter apply(Object config) {
         return (exchange, chain) -> {
@@ -79,6 +84,11 @@ public class RequestDecoderFilter extends AbstractGatewayFilterFactory<Object> {
             if (!filterUrl.isEmpty() && filterUrl.contains(path)) {
                 return chain.filter(exchange);
             }
+            boolean match = filterUrl.stream().anyMatch(url -> pathMatcher.match(url, path));
+            if (match) {
+                return chain.filter(exchange);
+            }
+
             if (contentType != null && FILE_TYPES.stream().anyMatch(contentType.toString()::startsWith)) {
                 // 这是一个文件请求
                 return chain.filter(exchange);

+ 2 - 2
lhb-gateway/src/main/resources/application-test.yml

@@ -7,13 +7,13 @@ spring:
       username: @nacos.username@
       password: @nacos.password@
       discovery:
-        server-addr: ${NACOS_HOST:kxs-register}:${NACOS_PORT:8848}
+        server-addr: nacos.default.svc.cluster.local:8848
         namespace: ca8c56b2-d022-4f75-8aaa-6e50ab3ec212
         watch:
           enabled: true
         watch-delay: 1000
       config:
-        server-addr: ${spring.cloud.nacos.discovery.server-addr}
+        server-addr: nacos.default.svc.cluster.local:8848
         namespace: ca8c56b2-d022-4f75-8aaa-6e50ab3ec212
   config:
     import:

+ 2 - 2
lhb-quartz/src/main/resources/application-test.yml

@@ -5,13 +5,13 @@ spring:
       username: @nacos.username@
       password: @nacos.password@
       discovery:
-        server-addr: ${NACOS_HOST:kxs-register}:${NACOS_PORT:8848}
+        server-addr: nacos.default.svc.cluster.local:8848
         namespace: ca8c56b2-d022-4f75-8aaa-6e50ab3ec212
         watch:
           enabled: true
         watch-delay: 1000
       config:
-        server-addr: ${spring.cloud.nacos.discovery.server-addr}
+        server-addr: nacos.default.svc.cluster.local:8848
         namespace: ca8c56b2-d022-4f75-8aaa-6e50ab3ec212
   config:
     import:

+ 2 - 2
lhb-system/lhb-system-biz/src/main/resources/application-test.yml

@@ -5,13 +5,13 @@ spring:
       username: @nacos.username@
       password: @nacos.password@
       discovery:
-        server-addr: ${NACOS_HOST:kxs-register}:${NACOS_PORT:8848}
+        server-addr: nacos.default.svc.cluster.local:8848
         namespace: ca8c56b2-d022-4f75-8aaa-6e50ab3ec212
         watch:
           enabled: true
         watch-delay: 1000
       config:
-        server-addr: ${spring.cloud.nacos.discovery.server-addr}
+        server-addr: nacos.default.svc.cluster.local:8848
         namespace: ca8c56b2-d022-4f75-8aaa-6e50ab3ec212
   config:
     import:

+ 1 - 1
pom.xml

@@ -384,7 +384,7 @@
                 <!-- 环境标识,需要与配置文件的名称相对应 -->
                 <profiles.active>test</profiles.active>
                 <nacos.username>nacos</nacos.username>
-                <nacos.password>kxs123123</nacos.password>
+                <nacos.password>Kxs#2025</nacos.password>
             </properties>
             <activation>
                 <!-- 默认环境 -->