新增生产统一部署脚本
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# 生产统一脚本实施记录
|
||||
|
||||
## 保存路径确认
|
||||
|
||||
- 本次为生产部署与启停脚本改动,实施记录保存到 `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` 仅退出日志查看,不停止后端进程。
|
||||
|
||||
## 使用方式
|
||||
|
||||
生产目录示例:
|
||||
|
||||
```text
|
||||
上线目录/
|
||||
├── ccdi_function.sh
|
||||
├── backend/
|
||||
├── frontend/
|
||||
└── ccdi_YYYYMMDD.zip
|
||||
```
|
||||
|
||||
部署:
|
||||
|
||||
```bash
|
||||
./ccdi_function.sh deploy
|
||||
./ccdi_function.sh deploy /path/to/ccdi_YYYYMMDD.zip
|
||||
```
|
||||
|
||||
重启:
|
||||
|
||||
```bash
|
||||
./ccdi_function.sh restart
|
||||
```
|
||||
|
||||
停止:
|
||||
|
||||
```bash
|
||||
./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 业务代码、前端业务代码、数据库脚本和既有生产脚本。
|
||||
Reference in New Issue
Block a user