Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2550e9713d | ||
|
|
4e1ca614d4 | ||
|
|
291de33d54 | ||
|
|
902b04a21a | ||
|
|
ba6a6af131 | ||
|
|
5ab54912a5 | ||
|
|
d6af2f1892 | ||
|
|
dcd29040de |
No files matched your search
+11
-22
@@ -1,5 +1,6 @@
|
||||
# 仅 tag 触发:顺序打包 backend / web / mobile-h5
|
||||
# 产物:/root/hzdyjs-releases/<tag>/{backend,web,mobile-h5}-<tag>.*
|
||||
# 仅 tag 触发:顺序打包 backend / mobile-h5
|
||||
# web 暂不在 CI 构建(测试机内存不足以跑 Vite 生产包),后续另议
|
||||
# 产物:/root/hzdyjs-releases/<tag>/{backend,mobile-h5}-<tag>.*
|
||||
# Maven 缓存:宿主机 /root/maven-repo → 容器 /maven-repo(由 runner DRONE_RUNNER_VOLUMES 注入)
|
||||
# 发版目录:/root/hzdyjs-releases → /hzdyjs-releases(同上,勿在本文件重复挂载)
|
||||
|
||||
@@ -35,24 +36,6 @@ steps:
|
||||
- cp -v ruoyi-admin/target/ruoyi-admin.jar "/hzdyjs-releases/${DRONE_TAG}/backend-${DRONE_TAG}.jar"
|
||||
- ls -lh "/hzdyjs-releases/${DRONE_TAG}/backend-${DRONE_TAG}.jar"
|
||||
|
||||
- name: package-web
|
||||
# 无 package-lock(被 gitignore);Node20 需 --legacy-peer-deps 规避 npm edgesOut
|
||||
# 低内存模式:串行 transform、关 gzip 插件、3G 堆(见 web build:ci)
|
||||
image: node:20-bookworm
|
||||
environment:
|
||||
NPM_CONFIG_REGISTRY: https://registry.npmmirror.com
|
||||
commands:
|
||||
- set -eu
|
||||
- echo "==> web tag=${DRONE_TAG} npm=$(npm -v) node=$(node -v) (build:ci low-mem)"
|
||||
- mkdir -p "/hzdyjs-releases/${DRONE_TAG}"
|
||||
- cd web
|
||||
- npm install --legacy-peer-deps --no-audit --no-fund
|
||||
# build:ci 内置 CI/VITE_LOW_MEM/关 gzip + 5G 堆(勿在 Drone environment 再声明自定义变量,会被预处理掏空)
|
||||
- npm run build:ci
|
||||
- test -f dist/index.html
|
||||
- tar -C dist -czf "/hzdyjs-releases/${DRONE_TAG}/web-${DRONE_TAG}.tar.gz" .
|
||||
- ls -lh "/hzdyjs-releases/${DRONE_TAG}/web-${DRONE_TAG}.tar.gz"
|
||||
|
||||
- name: package-mobile-h5
|
||||
image: node:20-bookworm
|
||||
environment:
|
||||
@@ -64,8 +47,14 @@ steps:
|
||||
- corepack enable
|
||||
- corepack prepare pnpm@9 --activate
|
||||
- cd mobile
|
||||
- pnpm config set registry https://registry.npmmirror.com
|
||||
- pnpm install --frozen-lockfile
|
||||
# 仓库内 pnpm-workspace.yaml 无 packages 字段,pnpm9 会直接失败;单包工程移走即可
|
||||
- mv pnpm-workspace.yaml pnpm-workspace.yaml.ci-bak 2>/dev/null || true
|
||||
# pnpm-lock.yaml 被 gitignore,不能 --frozen-lockfile
|
||||
# 跳过 puppeteer 下载 Chromium(H5 构建不需要,否则会卡很久)
|
||||
- export PUPPETEER_SKIP_DOWNLOAD=1 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
|
||||
# 无 lockfile 时 pnpm 默认隔离布局会导致 uni 找不到 webpack/lib/DefinePlugin;改用 hoisted
|
||||
- printf '%s\n' 'shamefully-hoist=true' 'node-linker=hoisted' >> .npmrc
|
||||
- pnpm install --no-frozen-lockfile --registry https://registry.npmmirror.com
|
||||
- pnpm run build
|
||||
- test -d dist/build/h5
|
||||
- tar -C dist/build/h5 -czf "/hzdyjs-releases/${DRONE_TAG}/mobile-h5-${DRONE_TAG}.tar.gz" .
|
||||
|
||||
@@ -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 并存,便于回溯
|
||||
- Maven 依赖缓存在宿主机,不因容器销毁而丢失
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不自动部署到业务机
|
||||
- CI 暂不打包 web(可本地 `npm run build:prod` / `build:ci`)
|
||||
- 不打微信小程序(`build:mp-weixin`);移动端按 `pnpm run build`(H5)
|
||||
- 不合成单一总包
|
||||
|
||||
@@ -30,7 +31,6 @@
|
||||
```
|
||||
/root/hzdyjs-releases/<tag>/
|
||||
backend-<tag>.jar
|
||||
web-<tag>.tar.gz
|
||||
mobile-h5-<tag>.tar.gz
|
||||
```
|
||||
|
||||
@@ -42,13 +42,9 @@
|
||||
`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)
|
||||
2. **mobile**(`node:20-bookworm` + corepack/pnpm)
|
||||
CI 先移走无效 `pnpm-workspace.yaml`,再
|
||||
`pnpm install --no-frozen-lockfile`(`pnpm-lock.yaml` 被 gitignore)→ `pnpm run build`(H5)
|
||||
打包 `mobile/dist/build/h5` → `mobile-h5-<tag>.tar.gz`
|
||||
|
||||
## Maven 公共缓存
|
||||
@@ -72,11 +68,11 @@
|
||||
|
||||
## 失败策略
|
||||
|
||||
任一步失败则整次构建失败;不部分覆盖同 tag 目录中已有文件以外的内容时,实现上可先 `mkdir -p` 再逐步写入——若中途失败,该 tag 目录可能不完整,以 Drone 构建状态为准。
|
||||
任一步失败则整次构建失败;实现上可先 `mkdir -p` 再逐步写入——若中途失败,该 tag 目录可能不完整,以 Drone 构建状态为准。
|
||||
|
||||
## 验收
|
||||
|
||||
1. 推送测试 tag(如 `ci-pkg-test-YYYYMMDDHHMM`)
|
||||
2. Drone 构建 success
|
||||
3. 三文件均存在于 `/root/hzdyjs-releases/<tag>/`,且 jar/tar 非空
|
||||
3. `backend-*.jar` 与 `mobile-h5-*.tar.gz` 均存在于 `/root/hzdyjs-releases/<tag>/`,且非空(无 web 包)
|
||||
4. 第二次同仓库构建时 Maven 日志出现大量依赖来自本地仓库(明显快于首次)
|
||||
Generated
+14958
File diff suppressed because it is too large.
Load diff
@@ -1,5 +0,0 @@
|
||||
allowBuilds:
|
||||
'@parcel/watcher': set this to true or false
|
||||
core-js: set this to true or false
|
||||
fsevents: set this to true or false
|
||||
puppeteer: set this to true or false
|
||||
Reference in new issue
Block a user