|
|
@@ -1,559 +1,397 @@
|
|
|
+#########################################################################################################
|
|
|
+# 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-min.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
|
|
|
+ - 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-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-min.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
|
|
|
+ - 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-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-min.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
|
|
|
+ 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-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-min.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
|
|
|
+ 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-basic ]
|
|
|
+#############################################################################################
|
|
|
+# 测试分支打包
|
|
|
|
|
|
+# 1.lhb-gateway-test
|
|
|
---
|
|
|
kind: pipeline
|
|
|
type: docker
|
|
|
@@ -650,6 +488,7 @@ trigger:
|
|
|
include:
|
|
|
- pull_request
|
|
|
- push
|
|
|
+############################################################################################
|
|
|
|
|
|
---
|
|
|
kind: pipeline
|
|
|
@@ -750,6 +589,7 @@ trigger:
|
|
|
- pull_request
|
|
|
- push
|
|
|
|
|
|
+############################################################################################
|
|
|
---
|
|
|
kind: pipeline
|
|
|
type: docker
|
|
|
@@ -849,6 +689,7 @@ trigger:
|
|
|
- pull_request
|
|
|
- push
|
|
|
|
|
|
+############################################################################################
|
|
|
---
|
|
|
kind: pipeline
|
|
|
type: docker
|