.drone.yml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # 仅 tag 触发:顺序打包 backend / web / mobile-h5
  2. # 产物:/root/hzdyjs-releases/<tag>/{backend,web,mobile-h5}-<tag>.*
  3. # Maven 缓存:宿主机 /root/maven-repo → 容器 /maven-repo(由 runner DRONE_RUNNER_VOLUMES 注入)
  4. # 发版目录:/root/hzdyjs-releases → /hzdyjs-releases(同上,勿在本文件重复挂载)
  5. kind: pipeline
  6. type: docker
  7. name: package-prod
  8. concurrency:
  9. limit: 1
  10. trigger:
  11. event:
  12. - tag
  13. clone:
  14. depth: 1
  15. steps:
  16. - name: package-backend
  17. image: maven:3.9-eclipse-temurin-17
  18. commands:
  19. - set -eu
  20. - echo "==> backend tag=${DRONE_TAG} commit=${DRONE_COMMIT}"
  21. - test -n "${DRONE_TAG}"
  22. - mkdir -p "/hzdyjs-releases/${DRONE_TAG}"
  23. - cd backend
  24. - |
  25. mvn clean package -Pprod \
  26. -Dmaven.test.skip=true \
  27. -Dmaven.compiler.parameters=true \
  28. -Dmaven.repo.local=/maven-repo
  29. - test -f ruoyi-admin/target/ruoyi-admin.jar
  30. - cp -v ruoyi-admin/target/ruoyi-admin.jar "/hzdyjs-releases/${DRONE_TAG}/backend-${DRONE_TAG}.jar"
  31. - ls -lh "/hzdyjs-releases/${DRONE_TAG}/backend-${DRONE_TAG}.jar"
  32. - name: package-web
  33. # 无 package-lock(被 gitignore);Node20 需 --legacy-peer-deps 规避 npm edgesOut
  34. # 低内存模式:串行 transform、关 gzip 插件、3G 堆(见 web build:ci)
  35. image: node:20-bookworm
  36. environment:
  37. NPM_CONFIG_REGISTRY: https://registry.npmmirror.com
  38. CI: 'true'
  39. VITE_LOW_MEM: '1'
  40. VITE_BUILD_COMPRESS: ''
  41. commands:
  42. - set -eu
  43. - echo "==> web tag=${DRONE_TAG} npm=$(npm -v) node=$(node -v) low_mem=${VITE_LOW_MEM}"
  44. - mkdir -p "/hzdyjs-releases/${DRONE_TAG}"
  45. - cd web
  46. - npm install --legacy-peer-deps --no-audit --no-fund
  47. - npm run build:ci
  48. - test -f dist/index.html
  49. - tar -C dist -czf "/hzdyjs-releases/${DRONE_TAG}/web-${DRONE_TAG}.tar.gz" .
  50. - ls -lh "/hzdyjs-releases/${DRONE_TAG}/web-${DRONE_TAG}.tar.gz"
  51. - name: package-mobile-h5
  52. image: node:20-bookworm
  53. environment:
  54. NPM_CONFIG_REGISTRY: https://registry.npmmirror.com
  55. commands:
  56. - set -eu
  57. - echo "==> mobile-h5 tag=${DRONE_TAG}"
  58. - mkdir -p "/hzdyjs-releases/${DRONE_TAG}"
  59. - corepack enable
  60. - corepack prepare pnpm@9 --activate
  61. - cd mobile
  62. - pnpm config set registry https://registry.npmmirror.com
  63. - pnpm install --frozen-lockfile
  64. - pnpm run build
  65. - test -d dist/build/h5
  66. - tar -C dist/build/h5 -czf "/hzdyjs-releases/${DRONE_TAG}/mobile-h5-${DRONE_TAG}.tar.gz" .
  67. - ls -lh "/hzdyjs-releases/${DRONE_TAG}/"
  68. - ls -lh "/hzdyjs-releases/${DRONE_TAG}/mobile-h5-${DRONE_TAG}.tar.gz"