2026-10-24-drone-tag-package-design.md 2.8 KB

杭州第一技师 — Drone Tag 打包设计

背景

在测试机既有 Gogs + Drone(101.35.245.122:18088)上,为仓库 hzdyjs-xg/all-project 增加 仅 tag 触发 的自动打包。因测试机约 3.6G 内存不足以完成 web Vite 生产构建(实测约 36 分钟后 OOM),CI 当前只打包 backend + mobile-h5;web 暂缓,后续另议。

目标

  • Push Git tag → 自动顺序构建 backend、mobile-h5 并落盘
  • 产物可按 tag 并存,便于回溯
  • Maven 依赖缓存在宿主机,不因容器销毁而丢失

非目标

  • 不自动部署到业务机
  • CI 暂不打包 web(可本地 npm run build:prod / build:ci)
  • 不打微信小程序(build:mp-weixin);移动端按 pnpm run build(H5)
  • 不合成单一总包

触发与仓库

项 值
Gogs http://101.35.245.122:3000/hzdyjs-xg/all-project
Drone 共用现有实例;激活本仓库并 trusted=true(host volume)
触发 event: tag only
并发 concurrency.limit: 1

产物布局

/root/hzdyjs-releases/<tag>/
  backend-<tag>.jar
  mobile-h5-<tag>.tar.gz

容器内挂载点:/hzdyjs-releases → 宿主机 /root/hzdyjs-releases。

构建顺序与命令

  1. backend(maven:3.9-eclipse-temurin-17)
    mvn clean package -Pprod -Dmaven.test.skip=true -Dmaven.compiler.parameters=true -Dmaven.repo.local=/maven-repo
    源文件:backend/ruoyi-admin/target/ruoyi-admin.jar → backend-<tag>.jar

  2. mobile(node:20-bookworm + corepack/pnpm)
    pnpm install --frozen-lockfile(仓库纳入 mobile/pnpm-lock.yaml;无效 pnpm-workspace.yaml 已删除)
    → pnpm run build(H5);CI 设置 PUPPETEER_SKIP_DOWNLOAD=1
    打包 mobile/dist/build/h5 → mobile-h5-<tag>.tar.gz

Maven 公共缓存

项 值
宿主机 /root/maven-repo
容器 /maven-repo
注入方式 runner DRONE_RUNNER_VOLUMES(勿在 .drone.yml 再声明同路径,避免 Duplicate mount)

Runner 共享挂载(全仓库注入)

在现有 /var/run/docker.sock、/root/zkxw-releases:/releases 基础上追加:

/root/maven-repo:/maven-repo
/root/hzdyjs-releases:/hzdyjs-releases

对 zkxw 流水线无害(未使用的挂载可忽略)。

失败策略

任一步失败则整次构建失败;实现上可先 mkdir -p 再逐步写入——若中途失败,该 tag 目录可能不完整,以 Drone 构建状态为准。

验收

  1. 推送测试 tag(如 ci-pkg-test-YYYYMMDDHHMM)
  2. Drone 构建 success
  3. backend-*.jar 与 mobile-h5-*.tar.gz 均存在于 /root/hzdyjs-releases/<tag>/,且非空(无 web 包)
  4. 第二次同仓库构建时 Maven 日志出现大量依赖来自本地仓库(明显快于首次)