.drone.yml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. kind: pipeline
  2. type: docker
  3. name: default
  4. # 触发分支
  5. trigger:
  6. branch:
  7. - master
  8. - develop
  9. steps:
  10. # 获取缓存 (首次部署注释掉此处)
  11. - name: restore-cache
  12. image: drillster/drone-volume-cache
  13. settings:
  14. restore: true
  15. mount:
  16. - /root/.m2/repository
  17. volumes:
  18. - name: repository
  19. path: /cache
  20. # 打包 (prod)
  21. - name: build-prod
  22. image: matderosa/maven-3.8-openjdk-17-gcc8.5
  23. volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
  24. - name: maven-cache
  25. path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
  26. # (/app/build/ 对应的是 /home/www/project/BackendSys/ 目录)
  27. - name: maven-build
  28. path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
  29. commands:
  30. - mvn clean package -P prod
  31. # (此时拷贝的内容是仓库分支拉下来的代码)
  32. - mkdir -p /app/build/target
  33. # 将打包好的 Jar包 拷贝到指定目录
  34. - cp target/backendsys.jar /app/build/target/backendsys.jar
  35. # 将配置文件从最新的分支 拷贝到目标目录
  36. - cp Dockerfile /app/build/Dockerfile
  37. - cp docker-compose.yml /app/build/docker-compose.yml
  38. - cp .drone.version.sh /app/build/.drone.version.sh
  39. when:
  40. branch:
  41. master
  42. # 打包 (develop)
  43. # - 在同个服务器时,docker-compose.yml 需要修改服务名
  44. - name: build-dev
  45. image: matderosa/maven-3.8-openjdk-17-gcc8.5
  46. volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
  47. - name: maven-cache
  48. path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
  49. # (/app/build/ 对应的是 /home/BackendSys/ 目录)
  50. - name: maven-build-dev
  51. path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
  52. commands:
  53. - mvn clean package -P dev
  54. # (此时拷贝的内容是仓库分支拉下来的代码)
  55. - mkdir -p /app/build/target
  56. # 将打包好的 Jar包 拷贝到指定目录
  57. - cp target/backendsys-dev.jar /app/build/target/backendsys-dev.jar
  58. # 将配置文件从最新的分支 拷贝到目标目录
  59. - cp Dockerfile /app/build/Dockerfile
  60. - cp docker-compose.yml /app/build/docker-compose.yml
  61. - cp .drone.version.sh /app/build/.drone.version.sh
  62. when:
  63. branch:
  64. develop
  65. # # 更新缓存
  66. # - name: rebuild-cache
  67. # image: drillster/drone-volume-cache
  68. # settings:
  69. # rebuild: true
  70. # mount:
  71. # - /root/.m2/repository
  72. # volumes:
  73. # - name: repository
  74. # path: /cache
  75. # ------------------------------------------------------------------------------
  76. # # 传输 (master) (部署与打包,是在不同服务器时,需要填写传输目标)
  77. # - name: scp-master
  78. # image: appleboy/drone-scp
  79. # settings:
  80. # port: 22
  81. # host:
  82. # from_secret: backendsys_ssh_host
  83. # username:
  84. # from_secret: backendsys_ssh_username
  85. # password:
  86. # from_secret: backendsys_ssh_password
  87. # command_timeout: 5m
  88. # source:
  89. # - target/backendsys.jar
  90. # target: /home/DaoguCms/
  91. # when:
  92. # branch: master
  93. # path:
  94. # - "!db/**"
  95. # - "!README.md"
  96. # 部署 (prod)
  97. - name: deploy-ssh-prod
  98. image: appleboy/drone-ssh
  99. settings:
  100. port: 22
  101. host:
  102. from_secret: ssh_host
  103. username:
  104. from_secret: ssh_username
  105. password:
  106. from_secret: ssh_password
  107. command_timeout: 1m
  108. script:
  109. # (此时是在 SSH登录服务器 的作用域)
  110. # Docker 启动
  111. - cd /home/BackendSys
  112. # 根据 Dockerfile 配置创建镜像 (名称需要小写)
  113. - sudo docker build -t backendsys .
  114. # 停止容器
  115. - sudo docker-compose down
  116. # 启动容器 (根据 docker-compose.yml 配置)
  117. - sudo docker-compose up -d
  118. - sudo echo "Docker App started."
  119. - sudo chmod +x .drone.version.sh
  120. - sudo ./.drone.version.sh
  121. when:
  122. branch: master
  123. # ------------------------------------------------------------------------------
  124. # # 传输 (develop) (部署与打包,是在不同服务器时,需要填写传输目标)
  125. # - name: scp-develop
  126. # image: appleboy/drone-scp
  127. # settings:
  128. # port: 22
  129. # host:
  130. # from_secret: backendsys_ssh_host
  131. # username:
  132. # from_secret: backendsys_ssh_username
  133. # password:
  134. # from_secret: backendsys_ssh_password
  135. # command_timeout: 5m
  136. # source:
  137. # - target/backendsys-dev.jar
  138. # target: /home/DaoguCmsDev/
  139. # when:
  140. # branch: develop
  141. # path:
  142. # - "!db/**"
  143. # - "!README.md"
  144. # 部署 (develop)
  145. - name: deploy-ssh-dev
  146. image: appleboy/drone-ssh
  147. settings:
  148. port: 22
  149. host:
  150. from_secret: ssh_host
  151. username:
  152. from_secret: ssh_username
  153. password:
  154. from_secret: ssh_password
  155. command_timeout: 1m
  156. script:
  157. - cd /home/BackendSysDev
  158. - sudo docker build -t backendsys-dev .
  159. - sudo docker-compose down
  160. - sudo docker-compose up -d
  161. - sudo echo "Docker App started."
  162. - sudo chmod +x .drone.version.sh
  163. - sudo ./.drone.version.sh
  164. when:
  165. branch: develop
  166. # 清除冗余镜像
  167. - name: cleanup
  168. image: docker:dind
  169. volumes:
  170. - name: docker-sock
  171. path: /var/run/docker.sock
  172. when:
  173. status: [ success ]
  174. commands:
  175. # 删除1小时前创建的未使用镜像
  176. - docker image prune -f --filter "until=1h"
  177. volumes: # 定义流水线挂载目录,用于共享数据
  178. - name: maven-build
  179. host:
  180. path: /home/BackendSys # 从宿主机中挂载的目录
  181. - name: maven-build-dev
  182. host:
  183. path: /home/BackendSysDev # 从宿主机中挂载的目录
  184. - name: maven-cache
  185. host:
  186. path: /root/docker/maven/cache
  187. - name: docker-sock
  188. host:
  189. path: /var/run/docker.sock