1.4 KiB
1.4 KiB
生产一键部署脚本仅识别当前项目 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等非正式后端包不会再误判- 正常部署链路仍然通过
- 只有当前项目正式