.drone.yml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. kind: pipeline
  2. type: docker
  3. name: default
  4. # 触发分支
  5. trigger:
  6. branch:
  7. - master
  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. # 参考:
  20. # https://www.jianshu.com/p/4aaac6c0c105
  21. # 打包
  22. - name: build
  23. image: matderosa/maven-3.8-openjdk-17-gcc8.5
  24. volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
  25. - name: maven-cache
  26. path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
  27. # (/app/build/ 对应的是 /home/www/project/BackendSys/ 目录)
  28. - name: maven-build
  29. path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
  30. commands:
  31. - mvn clean package -P prod
  32. # (此时拷贝的内容是仓库分支拉下来的代码)
  33. - mkdir -p /app/build/target
  34. # 将打包好的 Jar包 拷贝到指定目录
  35. - cp target/backendsys.jar /app/build/target/backendsys.jar
  36. # 将配置文件从最新的分支 拷贝到目标目录
  37. - cp Dockerfile /app/build/Dockerfile
  38. - cp docker-compose.yml /app/build/docker-compose.yml
  39. when:
  40. branch:
  41. master
  42. # # 更新缓存
  43. # - name: rebuild-cache
  44. # image: drillster/drone-volume-cache
  45. # settings:
  46. # rebuild: true
  47. # mount:
  48. # - /root/.m2/repository
  49. # volumes:
  50. # - name: repository
  51. # path: /cache
  52. # 部署
  53. - name: deploy-ssh
  54. image: appleboy/drone-ssh
  55. settings:
  56. port: 22
  57. host:
  58. from_secret: ssh_host
  59. username:
  60. from_secret: ssh_username
  61. password:
  62. from_secret: ssh_password
  63. command_timeout: 1m
  64. script:
  65. # (此时是在 SSH登录服务器 的作用域)
  66. # Docker 启动
  67. - cd /home/www/project/BackendSys
  68. # 根据 Dockerfile 配置创建镜像 (名称需要小写)
  69. - sudo docker build -t backendsys .
  70. # 停止容器
  71. - sudo docker-compose down
  72. # 启动容器 (根据 docker-compose.yml 配置)
  73. - sudo docker-compose up -d
  74. - sudo echo "Docker App started."
  75. when:
  76. branch: master
  77. # 清除冗余镜像
  78. - name: cleanup
  79. image: docker:dind
  80. volumes:
  81. - name: docker-sock
  82. path: /var/run/docker.sock
  83. when:
  84. status: [ success ]
  85. commands:
  86. # 删除1小时前创建的未使用镜像
  87. - docker image prune -f --filter "until=1h"
  88. volumes: # 定义流水线挂载目录,用于共享数据
  89. - name: maven-build
  90. host:
  91. path: /home/www/project/BackendSys # 从宿主机中挂载的目录
  92. - name: maven-cache
  93. host:
  94. path: /root/docker/maven/cache
  95. - name: docker-sock
  96. host:
  97. path: /var/run/docker.sock