# 杭州第一技师 — 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// backend-.jar web-.tar.gz mobile-h5-.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-.jar` 2. **web**(`node:20-bookworm`) `npm install` → `npm run build:prod` (`web/package-lock.json` 被 gitignore,仓库无 lock,不能用 `npm ci`) 打包 `web/dist` → `web-.tar.gz` 3. **mobile**(`node:20-bookworm` + corepack/pnpm) `pnpm install --frozen-lockfile` → `pnpm run build`(即 H5) 打包 `mobile/dist/build/h5` → `mobile-h5-.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//`,且 jar/tar 非空 4. 第二次同仓库构建时 Maven 日志出现大量依赖来自本地仓库(明显快于首次)