提交 b719ccea authored 作者: 陈泽健's avatar 陈泽健

feat(deploy): 新增自动化部署脚本模块化功能,将主服务部署函数拆分独立出来

- 创建了新的主服务部署脚本auto_deploy_services.sh
- 实现了Docker、Java、Python等多种服务的部署函数
- 添加了语音服务、无纸化信令、电子桌牌等专用部署模块
- 设计了模块化的部署流程和交互式菜单选择功能
- 建立了完整的错误处理和日志记录机制
- 编写了详细的PRD需求文档规范
上级 252db49a
# 主脚本模块化拆分主服务部署
## 代码路径
- 需调用代码路径:[自动化部署脚本/x86架构/新统一平台/auto_deploy_services.sh]
- 主脚本:[自动化部署脚本/x86架构/新统一平台/new_auto.sh]
## 功能需求
### 功能目标
**目标:** 当前主脚本代码量过于庞大,不利于维护,现需将主脚本中的相关部署函数独立出来,通过在主脚本中调用`auto_deploy_services.sh`。不要影响原有函数的部署逻辑。
### 需求描述
#### 调用逻辑
- 调用方式:
- 在主脚本中source导入`auto_deploy_services.sh`,然后调用`deploy_services`函数
```bash
# 在主脚本中导入主服务部署脚本(已有source导入,无需重复)
# source "$SCRIPT_DIR/auto_deploy_services.sh"
# 调用主服务部署脚本
deploy_services
```
- 接收脚本执行的返回参数,并使用log函数打印日志
- 0:主服务部署成功,使用`log "INFO"`打印日志
- 1:主服务部署失败,使用`log "ERROR"`打印错误日志,打印具体哪些服务部署失败,哪些成功,使用`return 1`退出当前操作
- 执行时机:
- 在主脚本中`getLatestVersion`之前执行;
#### 脚本设计要求
- 主入口函数:
-`auto_deploy_services.sh`中使用函数`deploy_services()`
- 主入口函数负责:
- 初始化变量(sudoset/SUDO)
- 通过交互式菜单(whiptail)让用户选择要部署的服务
- 调用对应的部署函数
- 返回部署结果
- log函数依赖:
- 脚本中的log函数与主脚本保持一致
- 在主脚本中先source导入`auto_deploy_services.sh`,再调用`deploy_services`函数
- 变量初始化:
-`deploy_services`函数中初始化以下变量:
- `sudoset`:sudo命令前缀(根据用户权限判断)
- `SUDO`:sudo命令(兼容不同函数中的变量名)
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
- 测试规范: `Docs/PRD/01规范文档/_PRD_规范文档_测试规范.md`
---
\ No newline at end of file
# 主脚本模块化拆分主服务部署计划执行文档
## 需求来源
- 需求文档:`Docs/PRD/自动化部署脚本/新统一平台/需求文档/_PRD_主脚本模块化拆分主服务部署_需求文档.md`
---
## 实现计划
### 1. 代码结构设计
```bash
auto_deploy_services.sh
├── docker_x86() # Docker安装
├── java_x86() # Java容器部署
├── python_x86() # Python容器部署
├── python_voice_x86() # Python语音后端部署
├── iListen_x86() # iListen语音服务部署
├── paperless_x86() # 无纸化信令服务部署
├── cardtable_x86() # 电子桌牌服务部署
└── deploy_services() # 主入口函数(交互式选择)
├── 初始化变量(sudoset/SUDO)
├── 显示交互式菜单(whiptail)
├── 调用选中的部署函数
└── 返回部署结果
```
### 2. 实现步骤
- [ ] 在auto_deploy_services.sh的deploy_services函数开头增加变量初始化
- [ ] 在主脚本new_auto.sh中source导入auto_deploy_services.sh
- [ ] 删除主脚本中的deploy_services函数定义
- [ ] 确认调用位置(getLatestVersion之前)
### 3. 技术要点
#### 3.1 变量初始化
在deploy_services函数开头增加:
```bash
# 初始化sudo相关变量
if [[ $(id -u) -ne 0 ]]; then
sudoset="sudo"
SUDO="sudo"
else
sudoset=""
SUDO=""
fi
```
#### 3.2 主脚本调用方式
```bash
# 导入主服务部署脚本
source "$SCRIPT_DIR/auto_deploy_services.sh"
# 调用部署函数(交互式选择)
deploy_services
```
### 4. 函数位置
- auto_deploy_services.sh:deploy_services函数(已存在,需增加变量初始化)
- new_auto.sh:删除第1234行开始的deploy_services函数定义
- new_auto.sh:在已有source导入区域添加auto_deploy_services.sh导入
### 5. 返回值定义
| 返回值 | 含义 | 处理方式 |
|--------|------|----------|
| 0 | 部署成功 | 继续执行 |
| 1 | 部署失败/用户取消 | 退出或继续 |
### 6. 执行流程
```
source导入 → deploy_services(交互式菜单)→ 调用选中的部署函数 → getLatestVersion
```
### 7. 已迁移的部署函数
| 函数名 | 功能 |
|--------|------|
| docker_x86 | Docker安装 |
| java_x86 | Java容器部署 |
| python_x86 | Python容器部署 |
| python_voice_x86 | Python语音后端部署 |
| iListen_x86 | iListen语音服务部署 |
| paperless_x86 | 无纸化信令服务部署 |
| cardtable_x86 | 电子桌牌服务部署 |
---
## 代码修改
### 修改文件
1. `自动化部署脚本/x86架构/新统一平台/auto_deploy_services.sh` - 增加变量初始化
2. `自动化部署脚本/x86架构/新统一平台/new_auto.sh` - 添加source导入,删除函数定义
---
## 测试计划
- [ ] 测试交互式菜单显示
- [ ] 测试单个服务部署
- [ ] 测试多个服务部署
- [ ] 测试用户取消场景
- [ ] 测试部署失败场景
---
## 优化功能回填
> 本章节用于记录实现过程中发现的优化点和改进措施
| 日期 | 优化项 | 状态 | 备注 |
|------|--------|------|------|
| - | - | - | - |
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论