收紧部署脚本jar进程识别
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
# 生产一键部署脚本仅识别当前项目 jar 实施记录
|
||||
|
||||
## 问题现象
|
||||
- 进程检测需要确认运行中的 `jar` 包必须是当前项目的正式后端包
|
||||
|
||||
## 根因分析
|
||||
- 之前 `collect_backend_pids()` 使用 `ps -ef` 时,只做了“命令行包含当前项目 jar 路径”的判断
|
||||
- 这种包含匹配会把以下情况误算为当前项目运行进程:
|
||||
- `-jar /当前项目/backend/ruoyi-admin.jar.bak`
|
||||
- 其他仅把正式 jar 路径作为前缀的命令参数
|
||||
- 结果会导致脚本误报“检测到后端已在运行,请先停止旧进程”
|
||||
|
||||
## 修改内容
|
||||
- 更新 `bin/prod/deploy_from_package.sh`
|
||||
- `collect_backend_pids()` 继续使用 `ps -ef`
|
||||
- 但匹配规则改为:
|
||||
- 命令行中必须存在 `-jar`
|
||||
- 且 `-jar` 的下一个参数必须严格等于当前项目的 `backend/ruoyi-admin.jar`
|
||||
- 同时仍要求包含当前脚本的 `-Dloan.pricing.home=<脚本目录>` 标记
|
||||
- 更新 `bin/prod/deploy_from_package_test.sh`
|
||||
- 新增自测场景:
|
||||
- 若 `ps -ef` 中存在 `-jar .../ruoyi-admin.jar.bak`,脚本必须忽略该进程并继续正常部署
|
||||
|
||||
## 验证结果
|
||||
- 已执行 `sh -n bin/prod/deploy_from_package.sh`
|
||||
- 已执行 `sh bin/prod/deploy_from_package_test.sh`
|
||||
- 自测结果确认:
|
||||
- 只有当前项目正式 `backend/ruoyi-admin.jar` 才会被识别为运行中的后端进程
|
||||
- `.jar.bak` 等非正式后端包不会再误判
|
||||
- 正常部署链路仍然通过
|
||||
Reference in New Issue
Block a user