luofuwen 4 mesi fa
parent
commit
d33a929cee
1 ha cambiato i file con 301 aggiunte e 468 eliminazioni
  1. 301 468
      .drone.yml

+ 301 - 468
.drone.yml

@@ -1,559 +1,389 @@
+#########################################################################################################
+# 1.打包构建lhb-gateway
 kind: pipeline
 type: docker
 name: lhb-gateway-prod
 
-volumes: # 声明数据卷
-  - name: mvn_repo # 数据卷名称
-    # Host Volume, 挂载到宿主机上的卷轴
+volumes:
+  - name: mvn_repo
     host:
-      # 宿主机的绝对路径
       path: /home/ABServer/cache/mvn_repo
   - name: mvn_config
     host:
-      path: /home/ABServer/config/mvn/
-  - name: targetDir
+      path: /home/ABServer/config/mvn
+  - name: build-artifacts
     host:
-      path: /lhb-gateway
+      path: /home/ABServer/webroot/lhb-gateway
+  - name: dockerfile-source
+    host:
+      path: /home/ABServer/config/docker
+  - name: timezone
+    host:
+      path: /etc/localtime
+  - name: docker-socket
+    host:
+      path: /var/run/docker.sock
 
 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 prod
-      - 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: lhb-gateway-a-host
-      username:
-        from_secret: lhb-gateway-username
-      password:
-        from_secret: lhb-gateway-pwd
-      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: lhb-gateway-a-host
-      username:
-        from_secret: lhb-gateway-username
-      password:
-        from_secret: lhb-gateway-pwd
-      port: 22
-      command_timeout: 2m
-      script:
-        - echo ====开始部署=======
-        - cd /home/ABServer/
-        - cp -r /home/ABServer/deploy-ready/lhb-gateway /home/ABServer/webroot/
-        - docker restart lhb-gateway
-        # - docker restart nodeServer1
-        - echo ====部署成功=======
-  - name: scp-project-b
-    image: appleboy/drone-scp
-    pull: if-not-exists
-    depends_on: [build-project] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: targetDir # 数据卷名称
-        path: /lhb-gateway # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: lhb-gateway-b-host
-      username:
-        from_secret: lhb-gateway-username
-      password:
-        from_secret: lhb-gateway-pwd
-      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-b
-    image: appleboy/drone-ssh
-    pull: if-not-exists
-    depends_on: [scp-project] # 依赖的步骤
-    settings:
-      host:
-        from_secret: lhb-gateway-b-host
-      username:
-        from_secret: lhb-gateway-username
-      password:
-        from_secret: lhb-gateway-pwd
-      port: 22
-      command_timeout: 2m
-      script:
-        - echo ====开始部署=======
-        - cd /home/ABServer/
-        - cp -r /home/ABServer/deploy-ready/lhb-gateway /home/ABServer/webroot/
-        - docker restart 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.dockerfile /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
+    environment:
+      HARBOR_USER:
+        from_secret: harbor_robot
+      HARBOR_PASS:
+        from_secret: harbor_token
+    commands:
+      - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
+      - cd /context
+      - TAG=$(date +%Y%m%d%H%M%S)
+      - 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"
 
 trigger:
-  branch:
-    - release-gateway
-  event:
-    - push
-  #排除合并请求
-  exclude:
-    - ref: refs/pull/*
+  event: [ push ]
+  branch: [ release-lhb-gateway ]
+
+#########################################################################################################
+#2.打包构建lhb-quartz-prod
 
 ---
 kind: pipeline
 type: docker
 name: lhb-quartz-prod
 
-volumes: # 声明数据卷
-  - name: mvn_repo # 数据卷名称
-    # Host Volume, 挂载到宿主机上的卷轴
+volumes:
+  - name: mvn_repo
     host:
-      # 宿主机的绝对路径
       path: /home/ABServer/cache/mvn_repo
   - name: mvn_config
     host:
-      path: /home/ABServer/config/mvn/
-  - name: targetDir
+      path: /home/ABServer/config/mvn
+  - name: build-artifacts
     host:
-      path: /lhb-quartz
+      path: /home/ABServer/webroot/lhb-quartz
+  - name: dockerfile-source
+    host:
+      path: /home/ABServer/config/docker
+  - name: timezone
+    host:
+      path: /etc/localtime
+  - name: docker-socket
+    host:
+      path: /var/run/docker.sock
 
 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 prod
-      - 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: lhb-gateway-a-host
-      username:
-        from_secret: lhb-gateway-username
-      password:
-        from_secret: lhb-gateway-pwd
-      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: lhb-gateway-a-host
-      username:
-        from_secret: lhb-gateway-username
-      password:
-        from_secret: lhb-gateway-pwd
-      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.dockerfile /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
+
+  # 阶段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
+    environment:
+      HARBOR_USER:
+        from_secret: harbor_robot
+      HARBOR_PASS:
+        from_secret: harbor_token
+    commands:
+      - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
+      - cd /context
+      - TAG=$(date +%Y%m%d%H%M%S)
+      - 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"
 
 trigger:
-  branch:
-    - release-quartz
-  event:
-    - push
-  #排除合并请求
-  exclude:
-    - ref: refs/pull/*
+  event: [ push ]
+  branch: [ release-lhb-quartz ]
+
+###########################################################################################################
+# 3.打包构建lhb-system-prod
 
 ---
 kind: pipeline
 type: docker
 name: lhb-system-prod
 
-volumes: # 声明数据卷
-  - name: mvn_repo # 数据卷名称
-    # Host Volume, 挂载到宿主机上的卷轴
+# 定义所有 Volume 映射
+volumes:
+  - name: mvn_repo
     host:
-      # 宿主机的绝对路径
       path: /home/ABServer/cache/mvn_repo
   - name: mvn_config
     host:
-      path: /home/ABServer/config/mvn/
-  - name: targetDir
+      path: /home/ABServer/config/mvn
+  - name: build-artifacts  # 构建产物临时目录
     host:
-      path: /lhb-system
+      path: /home/ABServer/webroot/lhb-system
+  - name: dockerfile-source
+    host:
+      path: /home/ABServer/config/docker
+  - name: timezone
+    host:
+      path: /etc/localtime
+  - name: docker-socket
+    host:
+      path: /var/run/docker.sock
 
 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 prod
-      - cp /drone/src/lhb-system/lhb-system-biz/target/*.jar /drone/src/dist/ && cp -r /drone/src/lhb-system/lhb-system-biz/target/lib /drone/src/dist/ && cp -r /drone/src/lhb-system/lhb-system-biz/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-system # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: lhb-system-base-a-host
-      username:
-        from_secret: username
-      password:
-        from_secret: lhb-pwd
-      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 # 当前步骤成功时执行
+      - 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.dockerfile /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
+    environment:
+      HARBOR_USER:
+        from_secret: harbor_robot
+      HARBOR_PASS:
+        from_secret: harbor_token
+    commands:
+      - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
+      - cd /context
+      - TAG=$(date +%Y%m%d%H%M%S)
+      - 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"
 
-  - name: deploy-project
-    image: appleboy/drone-ssh
-    pull: if-not-exists
-    depends_on: [scp-project] # 依赖的步骤
-    settings:
-      host:
-        from_secret: lhb-system-base-a-host
-      username:
-        from_secret: username
-      password:
-        from_secret: lhb-pwd
-      port: 22
-      command_timeout: 2m
-      script:
-        - echo ====开始部署=======
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-system-biz&ip=172.27.251.56&port=8060&weight=0'
-        - sleep 25s
-        - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-system/*
-        - cp -r /home/ABServer/deploy-ready/lhb-system /home/ABServer/webroot/
-        - docker restart lhb-system
-        - rm -rf /home/ABServer/deploy-ready/lhb-system/*
-        # - docker restart nodeServer1
-        - echo ====部署成功=======
-  - name: scp-project-b
-    image: appleboy/drone-scp
-    pull: if-not-exists
-    depends_on: [build-project] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: targetDir # 数据卷名称
-        path: /lhb-system # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: lhb-system-base-b-host
-      username:
-        from_secret: username
-      password:
-        from_secret: lhb-pwd
-      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 # 当前步骤成功时执行
+trigger:
+  event: [ push ]
+  branch: [ release-lhb-system ]
 
-  - name: deploy-project-b
-    image: appleboy/drone-ssh
-    pull: if-not-exists
-    depends_on: [scp-project] # 依赖的步骤
-    settings:
-      host:
-        from_secret: lhb-system-base-b-host
-      username:
-        from_secret: username
-      password:
-        from_secret: lhb-pwd
-      port: 22
-      command_timeout: 5m
-      script:
-        - echo ====开始部署=======
-        - sleep 60s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-system-biz&ip=172.27.251.56&port=8060&weight=1'
-        - sleep 1s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-system-biz&ip=172.27.251.65&port=8060&weight=0'
-        - sleep 25s
-        - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-system/*
-        - cp -r /home/ABServer/deploy-ready/lhb-system /home/ABServer/webroot/
-        - docker restart lhb-system
-        - rm -rf /home/ABServer/deploy-ready/lhb-system/*
-        # - docker restart nodeServer1
-        - sleep 60s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-system-biz&ip=172.27.251.65&port=8060&weight=1'
-        - echo ====部署成功=======
 
-trigger:
-  branch:
-    - release-system
-  event:
-    - push
-  #排除合并请求
-  exclude:
-    - ref: refs/pull/*
+##########################################################################################################
+# 4.打包构建lhb-basic
 
 ---
 kind: pipeline
 type: docker
 name: lhb-basic-prod
 
-volumes: # 声明数据卷
-  - name: mvn_repo # 数据卷名称
-    # Host Volume, 挂载到宿主机上的卷轴
+# 定义所有 Volume 映射
+volumes:
+  - name: mvn_repo
     host:
-      # 宿主机的绝对路径
       path: /home/ABServer/cache/mvn_repo
   - name: mvn_config
     host:
-      path: /home/ABServer/config/mvn/
-  - name: targetDir
+      path: /home/ABServer/config/mvn
+  - name: build-artifacts  # 构建产物临时目录
     host:
-      path: /lhb-basic
+      path: /home/ABServer/webroot/lhb-basic
+  - name: dockerfile-source
+    host:
+      path: /home/ABServer/config/docker
+  - name: timezone
+    host:
+      path: /etc/localtime
+  - name: docker-socket
+    host:
+      path: /var/run/docker.sock
 
 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 prod
-      - cp /drone/src/lhb-basic/lhb-basic-biz/target/*.jar /drone/src/dist/ && cp -r /drone/src/lhb-basic/lhb-basic-biz/target/lib /drone/src/dist/ && cp -r /drone/src/lhb-basic/lhb-basic-biz/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-basic # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: lhb-system-base-a-host
-      username:
-        from_secret: username
-      password:
-        from_secret: lhb-pwd
-      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: lhb-system-base-a-host
-      username:
-        from_secret: username
-      password:
-        from_secret: lhb-pwd
-      port: 22
-      command_timeout: 5m
-      script:
-        - echo ====开始部署=======
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-basic-biz&ip=172.27.251.56&port=8888&weight=0'
-        - sleep 25s
-        - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-basic/*
-        - cp -r /home/ABServer/deploy-ready/lhb-basic /home/ABServer/webroot/
-        - docker restart lhb-basic
-        - rm -rf /home/ABServer/deploy-ready/lhb-basic/*
-        # - docker restart nodeServer1
-        - echo ====部署成功=======
-  - name: scp-project-b
-    image: appleboy/drone-scp
-    pull: if-not-exists
-    depends_on: [build-project] # 依赖的步骤
-    volumes: # 挂载数据卷
-      - name: targetDir # 数据卷名称
-        path: /lhb-basic # 容器内目录 绝对路径
-    settings:
-      host:
-        from_secret: lhb-system-base-b-host
-      username:
-        from_secret: username
-      password:
-        from_secret: lhb-pwd
-      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-b
-    image: appleboy/drone-ssh
-    pull: if-not-exists
-    depends_on: [scp-project] # 依赖的步骤
-    settings:
-      host:
-        from_secret: lhb-system-base-b-host
-      username:
-        from_secret: username
-      password:
-        from_secret: lhb-pwd
-      port: 22
-      command_timeout: 5m
-      script:
-        - echo ====开始部署=======
-        - sleep 60s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-basic-biz&ip=172.27.251.56&port=8888&weight=1'
-        - sleep 1s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-basic-biz&ip=172.27.251.65&port=8888&weight=0'
-        - sleep 25s
-        - cd /home/ABServer/
-        - rm -rf /home/ABServer/webroot/lhb-basic/*
-        - cp -r /home/ABServer/deploy-ready/lhb-basic /home/ABServer/webroot/
-        - docker restart lhb-basic
-        - rm -rf /home/ABServer/deploy-ready/lhb-basic/*
-        - sleep 60s
-        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=lhb-basic-biz&ip=172.27.251.65&port=8888&weight=1'
-        # - 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.dockerfile /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
+    environment:
+      HARBOR_USER:
+        from_secret: harbor_robot
+      HARBOR_PASS:
+        from_secret: harbor_token
+    commands:
+      - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
+      - cd /context
+      - TAG=$(date +%Y%m%d%H%M%S)
+      - 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"
 
 trigger:
-  branch:
-    - release-basic
-  event:
-    - push
-  #排除合并请求
-  exclude:
-    - ref: refs/pull/*
+  event: [ push ]
+  branch: [ release-lhb-basic ]
+############################################################################################
+# 测试分支打包
 
+# 1.lhb-gateway-test
 ---
 kind: pipeline
 type: docker
@@ -650,6 +480,7 @@ trigger:
     include:
       - pull_request
       - push
+############################################################################################
 
 ---
 kind: pipeline
@@ -750,6 +581,7 @@ trigger:
       - pull_request
       - push
 
+############################################################################################
 ---
 kind: pipeline
 type: docker
@@ -849,6 +681,7 @@ trigger:
       - pull_request
       - push
 
+############################################################################################
 ---
 kind: pipeline
 type: docker