Files
loan-pricing/doc/implementation-report-2026-04-01-production-one-click-deploy-current-jar.md
2026-04-01 11:08:32 +08:00

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 等非正式后端包不会再误判
    • 正常部署链路仍然通过