demo.drone.yaml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. kind: pipeline
  2. name: profession-cvmart
  3. type: docker
  4. platform:
  5. os: linux
  6. arch: amd64
  7. steps:
  8. # 恢复缓存
  9. - name: restore-cache
  10. image: drillster/drone-volume-cache
  11. volumes:
  12. - name: cache
  13. path: /cache
  14. settings:
  15. restore: true
  16. mount:
  17. - ./vendor
  18. when:
  19. event: push
  20. # 安装依赖
  21. - name: install-package
  22. image: ccr.ccs.tencentyun.com/ev_applications/profession_cvmart:base_1.0.0
  23. commands:
  24. - COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer validate --no-check-all --strict
  25. - COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer install --no-dev --prefer-dist --optimize-autoloader -vvv
  26. # 重建缓存
  27. - name: rebuild-cache
  28. image: drillster/drone-volume-cache
  29. volumes:
  30. - name: cache
  31. path: /cache
  32. settings:
  33. rebuild: true
  34. mount:
  35. - ./vendor
  36. when:
  37. event: push
  38. # 单元测试
  39. - name: run-phpunit
  40. image: ccr.ccs.tencentyun.com/ev_applications/profession_cvmart:base_1.0.0
  41. commands:
  42. - ./vendor/phpunit/phpunit/phpunit
  43. # 构建镜像
  44. - name: build-image
  45. image: plugins/docker
  46. settings:
  47. username:
  48. from_secret: DOCKER_USERNAME
  49. password:
  50. from_secret: DOCKER_PASSWORD
  51. repo: ccr.ccs.tencentyun.com/ev_applications/demo
  52. registry: ccr.ccs.tencentyun.com
  53. tags: ${DRONE_TAG=latest}
  54. force_tag: true
  55. pull_image: false
  56. # 构建接口文档镜像
  57. - name: build-apidoc
  58. image: plugins/docker
  59. settings:
  60. username:
  61. from_secret: DOCKER_USERNAME
  62. password:
  63. from_secret: DOCKER_PASSWORD
  64. repo: ccr.ccs.tencentyun.com/ev_applications/profession_cvmart_apidoc
  65. registry: ccr.ccs.tencentyun.com
  66. tags: ${DRONE_TAG=latest}
  67. force_tag: true
  68. pull_image: false
  69. # 部署接口文档
  70. - name: deploy-apidoc
  71. image: appleboy/drone-ssh
  72. settings:
  73. host:
  74. from_secret: APIDOC_SERVER_HOST
  75. username:
  76. from_secret: APIDOC_SERVER_USERNAME
  77. password:
  78. from_secret: APIDOC_SERVER_PASSWORD
  79. port: 22
  80. script:
  81. - cd /home/alicfeng/tutorial/ev/dev_tool/document
  82. - docker-compose up -d
  83. # 部署测试环境
  84. - name: deploy-test
  85. image: quay.io/honestbee/drone-kubernetes
  86. kubernetes_server:
  87. from_secret: KUBERNETES_TEST_SERVER
  88. kubernetes_token:
  89. from_secret: KUBERNETES_TEST_TOKEN
  90. namespace:
  91. from_secret: KUBERNETES_TEST_NAMESPACE
  92. deployment: app-deployment
  93. container: [k8s-app]
  94. repo: ccr.ccs.tencentyun.com/ev_applications/demo
  95. tag: latest
  96. when:
  97. event:
  98. - push
  99. # 部署生产环境
  100. - name: deploy-prod
  101. image: quay.io/honestbee/drone-kubernetes
  102. kubernetes_server:
  103. from_secret: KUBERNETES_TEST_SERVER
  104. kubernetes_token:
  105. from_secret: KUBERNETES_TEST_TOKEN
  106. namespace:
  107. from_secret: KUBERNETES_TEST_NAMESPACE
  108. deployment: app-deployment
  109. container: [k8s-app]
  110. repo: ccr.ccs.tencentyun.com/ev_applications/demo
  111. tag: latest
  112. when:
  113. event:
  114. - tag
  115. # 邮件通知
  116. - name: notify-email
  117. image: drillster/drone-email
  118. settings:
  119. from: 18814129510@163.com
  120. host: smtp.163.com
  121. username: 18814129510@163.com
  122. password:
  123. from_secret: NOTIFY_EMAIL_PASSWORD
  124. port: 465
  125. skip_verify: true
  126. subject: CICD Profession Notify
  127. recipients:
  128. - a@samego.com
  129. when:
  130. status: [ failure, success ]
  131. # 挂载声明
  132. volumes:
  133. - name: cache
  134. host:
  135. path: /tmp/cache/composer
  136. # 依赖服务
  137. services:
  138. - name: redis-service
  139. image: redis
  140. - name: mysql-service
  141. image: mysql:5.7
  142. environment:
  143. MYSQL_ROOT_PASSWORD: ci
  144. MYSQL_USER: ci
  145. MYSQL_PASSWORD: ci
  146. MYSQL_DATABASE: ci