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

fix(deploy): 修复服务部署脚本递归调用时过滤参数丢失问题

- 在deploy_services函数的递归调用中传递filter_services参数
- 确保用户重新选择时菜单保持原有的过滤状态
- 移除Docker重启相关的冗余操作
- 添加问题处理文档记录根因分析和解决方案
上级 dacd618d
# 问题描述
## 主脚本:`自动化部署脚本/x86架构/新统一平台/new_auto_monitor.sh`
## 服务部署脚本:`自动化部署脚本/x86架构/新统一平台/auto_deploy_services.sh`
## 原需求文档:`Docs/PRD/自动化部署脚本/新统一平台/需求文档/_PRD_deploy服务部署脚本优化_需求文档.md`
## 问题现象
- 在执行代码后到了`服务部署中心`,交互菜单没有根据我的传参隐藏无关的系统部署选项。
## 需求规范
- 代码规范: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
# 单独的运维系统部署脚本执行后交互菜单没有根据传参隐藏 - 计划执行
## 问题描述
- 主脚本:`自动化部署脚本/x86架构/新统一平台/new_auto_monitor.sh`
- 服务部署脚本:`自动化部署脚本/x86架构/新统一平台/auto_deploy_services.sh`
- 问题:执行代码后到`服务部署中心`,交互菜单没有根据传参隐藏无关的系统部署选项
## 根因分析
`auto_deploy_services.sh``deploy_services` 函数中:
1. 第798行正确接收了参数 `local filter_services="$1"`
2. 第869-893行正确解析了过滤参数
3. **但是**在第936行和第965行的递归调用中,没有传递 `$filter_services` 参数:
- 第936行:`deploy_services` (未传参)
- 第965行:`deploy_services` (未传参)
这导致当用户选择"重新选择"时,菜单会显示全部服务选项,而非之前过滤后的选项。
## 修复方案
修改 `auto_deploy_services.sh``deploy_services` 函数的递归调用,确保传递过滤参数。
### 修改点1:第936行
```bash
# 修改前
deploy_services
# 修改后
deploy_services "$filter_services"
```
### 修改点2:第965行
```bash
# 修改前
deploy_services
# 修改后
deploy_services "$filter_services"
```
## 实施步骤
- [x] 1. 备份原文件 `auto_deploy_services.sh`
- [x] 2. 使用 Edit 工具修改第936行
- [x] 3. 使用 Edit 工具修改第965行
- [x] 4. 验证修改后的代码逻辑
## 执行结果
已完成代码修复,修改内容如下:
### 修改点1(第936行)
```bash
# 修改前
deploy_services
# 修改后
deploy_services "$filter_services"
```
### 修改点2(第965行)
```bash
# 修改前
deploy_services
# 修改后
deploy_services "$filter_services"
```
这样当用户选择"重新选择"时,菜单会保持原始过滤参数,只显示指定的服务选项。
## 预期效果
- 当主脚本调用 `deploy_services "monitor,cardtable,paperless"`
- 交互菜单只显示:运维集控系统、电子桌牌服务、无纸化信令服务
- 用户选择"重新选择"时,菜单仍然只显示这三个选项
- 不会显示预定系统和语音转录系统
## 相关文件
- `自动化部署脚本/x86架构/新统一平台/auto_deploy_services.sh`
- `自动化部署脚本/x86架构/新统一平台/new_auto_monitor.sh`
...@@ -932,8 +932,8 @@ function deploy_services() { ...@@ -932,8 +932,8 @@ function deploy_services() {
if [ -z "$choices" ]; then if [ -z "$choices" ]; then
if whiptail --title "ℹ️ 提示" --yesno "未选择任何服务,是否重新选择?" 10 50; then if whiptail --title "ℹ️ 提示" --yesno "未选择任何服务,是否重新选择?" 10 50; then
# 用户选择重新选择,递归调用 # 用户选择重新选择,递归调用(传递过滤参数保持菜单一致性)
deploy_services deploy_services "$filter_services"
return $? return $?
else else
# 用户选择退出 # 用户选择退出
...@@ -961,8 +961,8 @@ function deploy_services() { ...@@ -961,8 +961,8 @@ function deploy_services() {
14 60; then 14 60; then
log "INFO" "用户在第二级界面取消,返回服务选择界面" log "INFO" "用户在第二级界面取消,返回服务选择界面"
whiptail --title "🔄 重新选择" --msgbox "将返回服务选择界面..." 8 40 whiptail --title "🔄 重新选择" --msgbox "将返回服务选择界面..." 8 40
# 第二级取消:递归调用返回第一级界面 # 第二级取消:递归调用返回第一级界面(传递过滤参数保持菜单一致性)
deploy_services deploy_services "$filter_services"
return $? return $?
fi fi
......
...@@ -969,10 +969,7 @@ install_middleware() { ...@@ -969,10 +969,7 @@ install_middleware() {
log "INFO" "----------------------------------------" log "INFO" "----------------------------------------"
log "INFO" "优先部署Docker环境" log "INFO" "优先部署Docker环境"
if docker_x86; then if docker_x86; then
log "INFO" "✅ Docker环境部署成功,现在重启docker" log "INFO" "✅ Docker环境部署成功"
# 重启docker
$SUDO systemctl restart docker
sleep 60
else else
log "ERROR" "❌ Docker环境部署失败,停止中间件部署" log "ERROR" "❌ Docker环境部署失败,停止中间件部署"
return 1 return 1
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论