3.2 KiB
3.2 KiB
生产统一脚本实施记录
保存路径确认
- 本次为生产部署与启停脚本改动,实施记录保存到
docs/reports/implementation/,符合仓库实施文档目录规范。 - 生产脚本保存到
deploy/ccdi_function.sh,与既有生产部署脚本位于同一目录,便于上线包或生产目录统一维护。
修改目标
- 新增一个生产统一入口脚本
ccdi_function.sh。 - 脚本需要支持
deploy、restart、stop。 deploy集成生产备份、部署、重启流程,参考deploy/deploy-release-prod.sh。restart和stop集成生产后端进程控制流程,参考deploy/start-java-backend-prod.sh。
修改内容
- 新增
deploy/ccdi_function.sh- 使用
/bin/sh写法,避免服务器执行sh ccdi_function.sh时出现 Bash 专属语法兼容问题。 - 保留脚本顶部生产配置区,可直接配置
BACKEND_JAVA_HOME、APP_HOME、JAR_NAME、SPRING_PROFILES_ACTIVE、JAVA_OPTS、APP_ARGS和STOP_WAIT_SECONDS。 deploy支持显式传入上线包路径:./ccdi_function.sh deploy /path/to/ccdi_YYYYMMDD.zip。deploy未传上线包路径时,自动使用脚本同级目录下唯一的.zip文件,并排除dist.zip。- 上线包根层校验
ruoyi-admin.jar和dist.zip。 dist.zip解压后校验dist/index.html。- 部署前备份当前
backend/与frontend/到backups/YYYYMMDDHHMMSS/。 - 后端部署为原子替换
backend/ruoyi-admin.jar。 - 前端部署为清空
frontend/后复制dist/内文件。 deploy完成文件部署后直接调用脚本内restart_action,不再依赖外部start-java-backend-prod.sh。restart流程为stop_backend、start_backend、follow_logs。stop使用ps -ef扫描当前生产目录对应的backend/ruoyi-admin.jar进程,忽略<defunct>行,并清理 PID 文件。restart与deploy启动成功后持续输出backend/logs/backend-console.log,按Ctrl+C仅退出日志查看,不停止后端进程。
- 使用
使用方式
生产目录示例:
上线目录/
├── ccdi_function.sh
├── backend/
├── frontend/
└── ccdi_YYYYMMDD.zip
部署:
./ccdi_function.sh deploy
./ccdi_function.sh deploy /path/to/ccdi_YYYYMMDD.zip
重启:
./ccdi_function.sh restart
停止:
./ccdi_function.sh stop
验证记录
- 执行
sh -n deploy/ccdi_function.sh- 结果:通过
- 说明:脚本 Shell 语法正确。
- 执行
sh deploy/ccdi_function.sh --help- 结果:通过
- 说明:帮助信息正常输出,包含
deploy、restart、stop三个入口。
- 使用
/tmp构造最小生产目录、旧backend/、旧frontend/、上线压缩包、假 Java 和假日志输出命令后执行deploy- 结果:通过
- 说明:已验证旧文件备份、新 Jar 覆盖、前端
dist/文件部署、部署后重启流程。
- 在同一
/tmp验证环境执行stop- 结果:通过
- 说明:已验证
stop可停止由统一脚本启动的后端进程。
影响范围
- 仅新增生产统一脚本与本实施记录。
- 不修改 Java 业务代码、前端业务代码、数据库脚本和既有生产脚本。