Files
ccdi/docs/reports/implementation/2026-04-28-prod-release-deploy-script-implementation.md
2026-04-28 17:27:24 +08:00

2.6 KiB

生产上线部署脚本实施记录

保存路径确认

  • 本次为生产上线部署脚本改动,实施记录保存到 docs/reports/implementation/,符合仓库实施文档目录规范。

修改目标

  • 生成一个可放在上线环境执行的部署脚本。
  • 上线环境目录下已有 backend/frontend/ 和一个上线压缩包。
  • 上线压缩包根层包含 ruoyi-admin.jardist.zip
  • 执行脚本后先备份 backend/frontend/ 旧文件,再解压上线包并部署到对应目录,最后调用 start-java-backend-prod.sh 重启后端并输出日志。

修改内容

  • 新增 deploy/deploy-release-prod.sh
    • 默认按脚本同级目录解析 backend/frontend/start-java-backend-prod.sh 和上线压缩包。
    • 使用 /bin/sh 写法,避免依赖 Bash 进程替换等服务器环境不一定支持的语法。
    • 支持显式传入上线压缩包路径:./deploy-release-prod.sh /path/to/ccdi_YYYYMMDD.zip
    • 未传入压缩包时,自动使用脚本同级目录下唯一的 .zip 文件,并排除 dist.zip
    • 部署前将 backend/frontend/ 当前内容备份到 backups/YYYYMMDDHHMMSS/
    • 解压上线包后校验根层必须存在 ruoyi-admin.jardist.zip
    • 解压 dist.zip 后校验必须存在 dist/index.html
    • 后端部署为覆盖 backend/ruoyi-admin.jar
    • 前端部署为清空 frontend/ 后复制 dist/ 内文件到 frontend/
    • 部署完成后执行 bash start-java-backend-prod.sh restart,由现有启动脚本完成后端重启并持续输出后端日志。

使用方式

生产环境目录结构:

上线目录/
├── deploy-release-prod.sh
├── start-java-backend-prod.sh
├── backend/
├── frontend/
└── ccdi_YYYYMMDD.zip

执行:

./deploy-release-prod.sh

或显式指定压缩包:

./deploy-release-prod.sh /path/to/ccdi_YYYYMMDD.zip

验证记录

  • 执行 sh -n deploy/deploy-release-prod.sh
    • 结果:通过
    • 说明:脚本 Shell 语法正确。
  • 执行 sh deploy/deploy-release-prod.sh --help
    • 结果:通过
    • 说明:帮助信息正常输出。
  • 使用 /tmp 构造最小上线目录、旧 backend/、旧 frontend/、上线压缩包和假的 start-java-backend-prod.sh 后执行部署脚本
    • 结果:通过
    • 说明:已验证旧文件备份、新 Jar 覆盖、前端 dist/ 文件部署,以及最终调用启动脚本 restart

影响范围

  • 仅新增生产上线部署脚本与本实施记录。
  • 不修改 Java 业务代码、前端业务代码、数据库脚本和现有后端启动脚本。