.drone.yml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. kind: pipeline
  2. type: docker
  3. name: default
  4. trigger:
  5. branch:
  6. - master
  7. - develop
  8. steps:
  9. # 获取缓存 (首次部署注释掉此处)
  10. # - name: restore-cache
  11. # image: drillster/drone-volume-cache
  12. # settings:
  13. # restore: true
  14. # mount:
  15. # - /root/.m2/repository
  16. # volumes:
  17. # - name: repository
  18. # path: /cache
  19. # 打包 prod
  20. - name: build-prod
  21. image: matderosa/maven-3.8-openjdk-17-gcc8.5
  22. volumes:
  23. - name: maven-cache
  24. path: /root/.m2
  25. - name: maven-build
  26. path: /app/build
  27. commands:
  28. - mvn clean package -P prod -DskipTests
  29. - mkdir -p /app/build/target
  30. - cp target/test.jar /app/build/target/test.jar
  31. - cp Dockerfile /app/build/Dockerfile
  32. - cp docker-compose.yml /app/build/docker-compose.yml
  33. when:
  34. branch:
  35. master
  36. # 打包 dev
  37. - name: build-dev
  38. image: matderosa/maven-3.8-openjdk-17-gcc8.5
  39. volumes:
  40. - name: maven-cache
  41. path: /root/.m2
  42. - name: maven-build-dev
  43. path: /app/build
  44. commands:
  45. - mvn clean package -P dev -DskipTests
  46. - mkdir -p /app/build/target
  47. - cp target/test-dev.jar /app/build/target/test-dev.jar
  48. - cp Dockerfile /app/build/Dockerfile
  49. - cp docker-compose.yml /app/build/docker-compose.yml
  50. when:
  51. branch:
  52. develop
  53. # 传输 prod
  54. - name: scp-master
  55. image: appleboy/drone-scp
  56. settings:
  57. port: 22
  58. host:
  59. from_secret: ssh_host
  60. username:
  61. from_secret: ssh_user
  62. password:
  63. from_secret: ssh_pwd
  64. command_timeout: 5m
  65. source:
  66. - target/test.jar
  67. target: /home/TestApp/
  68. when:
  69. branch: master
  70. path:
  71. - "!db/**"
  72. - "!README.md"
  73. # 部署 prod
  74. - name: deploy-ssh-prod
  75. image: appleboy/drone-ssh
  76. settings:
  77. port: 22
  78. host:
  79. from_secret: ssh_host
  80. username:
  81. from_secret: ssh_user
  82. password:
  83. from_secret: ssh_pwd
  84. command_timeout: 1m
  85. script:
  86. - cd /home/TestApp
  87. - sudo docker build -t test .
  88. - sudo docker-compose down
  89. - sudo docker-compose up -d
  90. - sudo echo "Docker App started."
  91. when:
  92. branch: master
  93. # 传输 dev
  94. - name: scp-develop
  95. image: appleboy/drone-scp
  96. settings:
  97. port: 22
  98. host:
  99. from_secret: ssh_host
  100. username:
  101. from_secret: ssh_user
  102. password:
  103. from_secret: ssh_pwd
  104. command_timeout: 5m
  105. source:
  106. - target/test-dev.jar
  107. target: /home/TestAppDev/
  108. when:
  109. branch: develop
  110. # 部署 dev
  111. - name: deploy-ssh-dev
  112. image: appleboy/drone-ssh
  113. settings:
  114. port: 22
  115. host:
  116. from_secret: ssh_host
  117. username:
  118. from_secret: ssh_user
  119. password:
  120. from_secret: ssh_pwd
  121. command_timeout: 1m
  122. script:
  123. - cd /home/TestAppDev
  124. - sudo docker build -t test-dev .
  125. - sudo docker-compose down
  126. - sudo docker-compose up -d
  127. - sudo echo "Docker App started."
  128. when:
  129. branch: develop
  130. # 清理镜像
  131. - name: cleanup
  132. image: docker:dind
  133. volumes:
  134. - name: docker-sock
  135. path: /var/run/docker.sock
  136. when:
  137. status: [ success ]
  138. commands:
  139. - docker image prune -f --filter "dangling=true" --filter "until=1h"
  140. volumes:
  141. - name: maven-build
  142. host:
  143. path: /home/TestApp
  144. - name: maven-build-dev
  145. host:
  146. path: /home/TestAppDev
  147. - name: maven-cache
  148. host:
  149. path: /root/docker/maven/cache
  150. - name: docker-sock
  151. host:
  152. path: /var/run/docker.sock