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 触发 的自动打包,产出后端 / Web / 移动端 H5 三份独立产物,并复用宿主机 Maven 本地仓库以加速 Java 构建。

目标

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

非目标

  • 不自动部署到业务机
  • 不打微信小程序(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
  web-<tag>.tar.gz
  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. web(node:20-bookworm)
    npm install → npm run build:prod
    (web/package-lock.json 被 gitignore,仓库无 lock,不能用 npm ci)
    打包 web/dist → web-<tag>.tar.gz

  3. mobile(node:20-bookworm + corepack/pnpm)
    pnpm install --frozen-lockfile → pnpm run build(即 H5)
    打包 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 流水线无害(未使用的挂载可忽略)。

失败策略

任一步失败则整次构建失败;不部分覆盖同 tag 目录中已有文件以外的内容时,实现上可先 mkdir -p 再逐步写入——若中途失败,该 tag 目录可能不完整,以 Drone 构建状态为准。

验收

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