|
@@ -1,18 +1,19 @@
|
|
|
-# 杭州第一技师 — Drone Tag 三端打包设计
|
|
|
|
|
|
|
+# 杭州第一技师 — Drone Tag 打包设计
|
|
|
|
|
|
|
|
## 背景
|
|
## 背景
|
|
|
|
|
|
|
|
-在测试机既有 Gogs + Drone(`101.35.245.122:18088`)上,为仓库 `hzdyjs-xg/all-project` 增加 **仅 tag 触发** 的自动打包,产出后端 / Web / 移动端 H5 三份独立产物,并复用宿主机 Maven 本地仓库以加速 Java 构建。
|
|
|
|
|
|
|
+在测试机既有 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 → 自动顺序构建三端并落盘
|
|
|
|
|
|
|
+- Push Git tag → 自动顺序构建 backend、mobile-h5 并落盘
|
|
|
- 产物可按 tag 并存,便于回溯
|
|
- 产物可按 tag 并存,便于回溯
|
|
|
- Maven 依赖缓存在宿主机,不因容器销毁而丢失
|
|
- Maven 依赖缓存在宿主机,不因容器销毁而丢失
|
|
|
|
|
|
|
|
## 非目标
|
|
## 非目标
|
|
|
|
|
|
|
|
- 不自动部署到业务机
|
|
- 不自动部署到业务机
|
|
|
|
|
+- CI 暂不打包 web(可本地 `npm run build:prod` / `build:ci`)
|
|
|
- 不打微信小程序(`build:mp-weixin`);移动端按 `pnpm run build`(H5)
|
|
- 不打微信小程序(`build:mp-weixin`);移动端按 `pnpm run build`(H5)
|
|
|
- 不合成单一总包
|
|
- 不合成单一总包
|
|
|
|
|
|
|
@@ -30,7 +31,6 @@
|
|
|
```
|
|
```
|
|
|
/root/hzdyjs-releases/<tag>/
|
|
/root/hzdyjs-releases/<tag>/
|
|
|
backend-<tag>.jar
|
|
backend-<tag>.jar
|
|
|
- web-<tag>.tar.gz
|
|
|
|
|
mobile-h5-<tag>.tar.gz
|
|
mobile-h5-<tag>.tar.gz
|
|
|
```
|
|
```
|
|
|
|
|
|
|
@@ -42,12 +42,7 @@
|
|
|
`mvn clean package -Pprod -Dmaven.test.skip=true -Dmaven.compiler.parameters=true -Dmaven.repo.local=/maven-repo`
|
|
`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`
|
|
源文件:`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)
|
|
|
|
|
|
|
+2. **mobile**(`node:20-bookworm` + corepack/pnpm)
|
|
|
`pnpm install --frozen-lockfile` → `pnpm run build`(即 H5)
|
|
`pnpm install --frozen-lockfile` → `pnpm run build`(即 H5)
|
|
|
打包 `mobile/dist/build/h5` → `mobile-h5-<tag>.tar.gz`
|
|
打包 `mobile/dist/build/h5` → `mobile-h5-<tag>.tar.gz`
|
|
|
|
|
|
|
@@ -72,11 +67,11 @@
|
|
|
|
|
|
|
|
## 失败策略
|
|
## 失败策略
|
|
|
|
|
|
|
|
-任一步失败则整次构建失败;不部分覆盖同 tag 目录中已有文件以外的内容时,实现上可先 `mkdir -p` 再逐步写入——若中途失败,该 tag 目录可能不完整,以 Drone 构建状态为准。
|
|
|
|
|
|
|
+任一步失败则整次构建失败;实现上可先 `mkdir -p` 再逐步写入——若中途失败,该 tag 目录可能不完整,以 Drone 构建状态为准。
|
|
|
|
|
|
|
|
## 验收
|
|
## 验收
|
|
|
|
|
|
|
|
1. 推送测试 tag(如 `ci-pkg-test-YYYYMMDDHHMM`)
|
|
1. 推送测试 tag(如 `ci-pkg-test-YYYYMMDDHHMM`)
|
|
|
2. Drone 构建 success
|
|
2. Drone 构建 success
|
|
|
-3. 三文件均存在于 `/root/hzdyjs-releases/<tag>/`,且 jar/tar 非空
|
|
|
|
|
|
|
+3. `backend-*.jar` 与 `mobile-h5-*.tar.gz` 均存在于 `/root/hzdyjs-releases/<tag>/`,且非空(无 web 包)
|
|
|
4. 第二次同仓库构建时 Maven 日志出现大量依赖来自本地仓库(明显快于首次)
|
|
4. 第二次同仓库构建时 Maven 日志出现大量依赖来自本地仓库(明显快于首次)
|