.drone.yml 2.8 KB

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