.drone.yml 2.7 KB

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