新增生产一键部署脚本

This commit is contained in:
wkc
2026-04-01 10:32:57 +08:00
parent db5735897d
commit 3ce3c438a9
4 changed files with 611 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
# 生产一键部署脚本后端实施记录
## 修改内容
- 新增生产一键部署脚本 `bin/prod/deploy_from_package.sh`
- 新增部署脚本自测文件 `bin/prod/deploy_from_package_test.sh`
- 脚本内固定 `JAVA_BIN="/home/webapp/env/java/bin/java"`
- 新增脚本同目录唯一发布 zip 校验、包内唯一 `jar` 校验
- 新增旧版后端 `jar` 时间戳备份规则
- 新增后端 PID 文件、托管进程标记、停止旧进程、启动新进程和端口监听校验逻辑
## 实现说明
- 新脚本执行目录固定为脚本所在目录,要求同目录存在:
- `backend/`
- `frontend/`
- 1 个发布 zip
- 后端目标文件固定落到 `backend/ruoyi-admin.jar`
- 旧版后端 `jar` 通过 `ruoyi-admin.jar.<时间戳>.bak` 方式原地备份
- 启动时附加 `-Dloan.pricing.home=<脚本目录>`,用于识别当前脚本托管进程
- PID 文件固定写入 `backend/backend.pid`
- 后端日志固定写入 `backend/backend-console.log`
- 端口监听检测优先使用 `ss`,当前环境没有 `ss` 时改为使用 `lsof` 完成同一条校验
## 验证结果
- 已执行 `sh -n bin/prod/deploy_from_package.sh`,语法校验通过
- 已执行 `sh bin/prod/deploy_from_package_test.sh`
- 自测覆盖以下场景:
- 正常部署场景:
- 旧版 `jar` 被重命名为时间戳备份文件
- 新版 `jar` 落到 `backend/ruoyi-admin.jar`
- 后端 PID 文件和日志文件生成成功
- 假后端进程启动成功并监听测试端口
- 异常场景:
- 脚本同目录存在多个发布 zip 时,脚本按预期失败并输出错误信息
- 自测使用临时目录和临时假 `java` 进程,测试结束后已自动清理对应进程和目录

View File

@@ -0,0 +1,33 @@
# 生产一键部署脚本前端实施记录
## 修改内容
-`bin/prod/deploy_from_package.sh` 中新增前端 `dist.zip` 唯一校验逻辑
- 新增旧版 `frontend/dist` 时间戳备份规则
- 新增新版 `frontend/dist.zip` 替换逻辑
- 新增前端静态资源解压到 `frontend/dist/` 的逻辑
- 新增 `resolve_frontend_source_dir`,支持从 `dist.zip` 解压结果中定位实际前端根目录
## 范围确认
- 本次前端交付物仅为部署脚本中的静态包部署链路
- 未修改 `ruoyi-ui` 下任何页面、接口、构建配置或打包脚本
- 如后续出现页面需求,需要回到新需求重新做设计和计划
## 实现说明
- 脚本会校验发布包中必须且只能存在 1 个 `dist.zip`
-`frontend/dist` 已存在,则原地重命名为 `dist-<时间戳>`
- 新版前端压缩包统一替换到 `frontend/dist.zip`
- 新版前端资源统一解压到 `frontend/dist/`
- 解压结果支持以下结构:
- 解压根目录直接为前端文件
- 解压后为 `dist/index.html`
- 其他情况下通过 `find index.html` 自动定位前端根目录
## 验证结果
- 已执行 `sh bin/prod/deploy_from_package_test.sh`
- 自测覆盖以下前端链路:
- 旧版 `frontend/dist` 被重命名为时间戳备份目录
- 新版 `frontend/dist.zip` 成功替换
- 新版前端资源成功解压到 `frontend/dist/index.html`
- 解压后的页面内容与发布包内容一致
- 已执行 `git status --short ruoyi-ui`
- 已确认 `ruoyi-ui` 本次没有新增或修改的源码文件被纳入改动范围