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

docs(update-script): 更新自动更新部署包版本需求文档并清理配置文件

- 在需求文档中添加脚本路径说明和操作流程
- 修正meetngV2和meetngV3包名称为meetingV2和meetingV3
- 添加详细的更新操作流程和异常处理机制
- 优化部署包更新说明中的配置文件覆盖规则
- 补充核验材料的具体要求和报告内容
- 删除不再使用的配置文件和待确认事项文档
- 清理过时的JSON配置文件包括项目配置和服务映射配置
上级 ba509582
{
"projects": {
"1": {
"name": "中广核大亚湾项目",
"description": "中广核大亚湾核电项目",
"servers": {
"1": {
"name": "中广核大亚湾-前端测试环境",
"type": "frontend",
"ip": "10.126.4.79",
"port": 1122,
"ssh_username": "root",
"ssh_password": "Admin@123Admin@123"
},
"2": {
"name": "中广核大亚湾-后端测试环境",
"type": "backend",
"ip": "10.126.4.81",
"port": 1122,
"ssh_username": "appadmin",
"ssh_password": "CGNadm!@345CGNadm!@345",
"su_username": "root",
"su_password": "Admin@123Admin@123"
}
},
"platforms": {
"新统一平台": {
"预定系统": {
"frontend_path": "/data/cgnyd-meeting/frontend",
"inner_backend_path": "/data/api/java-meeting/java-meeting2.0",
"outer_backend_path": "/data/api/java-meeting/java-meeting-extapi",
"upload_path": "/home/appadmin/"
},
"运维集控系统": {
"frontend_path": "/data/",
"inner_backend_path": "/data/",
"outer_backend_path": "/data/",
"upload_path": "/home/appadmin/"
},
"语音转录系统": {
"frontend_path": "/data/",
"inner_backend_path": "/data/",
"outer_backend_path": "/data/",
"upload_path": "/home/appadmin/"
}
},
"标准版平台": {
"预定系统": {
"frontend_path": "/var/www/cims-web/",
"inner_backend_path": "/var/www/cims-java/",
"outer_backend_path": "/var/www/cims-exapi/",
"upload_path": "/home/appadmin/"
},
"运维集控系统": {
"frontend_path": "/data/",
"inner_backend_path": "/data/",
"outer_backend_path": "/data/",
"upload_path": "/home/appadmin/"
},
"语音转录系统": {
"frontend_path": "/data/",
"inner_backend_path": "/data/",
"outer_backend_path": "/data/",
"upload_path": "/home/appadmin/"
}
}
},
"database": {
"type": "MySQL",
"is_containerized": true,
"container_pattern": "umysql",
"username": "root",
"password": "dNrprU&2S",
"databases": ["ubains", "devops"]
}
}
}
}
{
"前端": {
"AI前端包": "/data/services/web/pc/pc-vue2-ai",
"后台前端包": "/data/services/web/pc/pc-vue2-backstage",
"主应用前端包": "/data/services/web/pc/pc-vue2-main",
"会控前端包": "/data/services/web/pc/pc-vue2-meetingControl",
"2前端包": "/data/services/web/pc/pc-vue2-meetngV2",
"3前端包": "/data/services/web/pc/pc-vue2-meetngV3",
"运维集控前端包": "/data/services/web/pc/pc-vue2-moniter",
"门户前端包": "/data/services/web/pc/pc-vue2-platform",
"讯飞前端包": "/data/services/web/pc/pc-vue2-voice/pc-vue2-voice"
},
"后端": {
"auth门户包": "/data/services/api/auth/auth-sso-auth",
"gatway门户包": "/data/services/api/auth/auth-sso-gatway",
"system门户包": "/data/services/api/auth/auth-sso-system",
"2服务包": "/data/services/api/java-meeting/java-meeting2.0",
"3服务包": "/data/services/api/java-meeting/java-meeting3.0",
"对外服务包": "/data/services/api/java-meeting/java-meeting-extapi",
"信息调度服务包": "/data/services/api/java-meeting/java-message-scheduling",
"定时任务服务包": "/data/services/api/java-meeting/java-quartz"
}
}
\ No newline at end of file
{
"前端": "./front",
"后端": "./back"
}
\ No newline at end of file
{
"传统平台": {
"预定系统": {
"前端更新": {
"services_path": "/var/www/java/ubains-web-2.0/",
"services_file": [
"*.js",
"index.html",
"static"
]
},
"后端更新": {
"inner_services_path": "/var/www/java/api-java-meeting2.0/",
"inner_services_file": "ubains-meeting-inner-api-1.0-SNAPSHOT.jar",
"extapi_services_path": "/var/www/java/external-meeting-api/",
"extapi_services_file": "ubains-meeting-api-1.0-SNAPSHOT.jar"
}
},
"运维系统": {
"前端更新": {
"services_path": "/var/www/html/web-vue-rms",
"services_file": [
"module",
"index.html",
"static"
]
},
"后端更新": {
"services_path": "/var/www/html/",
"services_file": [
"UbainsDevOps",
"cmdb"
]
}
}
},
"新统一平台": {
"预定系统": {
"前端更新": {
"ai_services_path": "/data/services/web/pc/pc-vue2-ai",
"ai_services_file": ["index.html","static"],
"back_services_path": "/data/services/web/pc/pc-vue2-backstage",
"back_services_file": ["index.html","static"],
"main_services_path": "/data/services/web/pc/pc-vue2-main",
"main_services_file": ["index.html","static","*.worker.js"],
"meetingControl_services_path": "/data/services/web/pc/pc-vue2-meetingControl",
"meetingControl_services_file": ["index.html","static"],
"meetingV2_services_path": "/data/services/web/pc/pc-vue2-meetngV2",
"meetingV2_services_file": ["index.html","static","*.worker.js"],
"meetingV3_services_path": "/data/services/web/pc/pc-vue2-meetngV3",
"meetingV3_services_file": ["index.html","static","*.worker.js"],
"monitor_services_path": "/data/services/web/pc/pc-vue2-moniter",
"monitor_services_file": ["index.html","static","module"],
"platform_services_path": "/data/services/web/pc/pc-vue2-platform",
"platform_services_file": ["index.html","static","temp"],
"voice_services_path": "/data/services/web/pc/pc-vue2-voice/pc-vue2-voice",
"voice_services_file": ["index.html","static"]
},
"后端更新": {
"auth_services_path": "/data/services/api/auth/auth-sso-auth",
"auth_services_file": "ubains-auth.jar",
"gatway_serices_path": "/data/services/api/auth/auth-sso-gatway",
"gatway_serices_file": "ubains-gateway.jar",
"system_services_path": "/data/services/api/auth/auth-sso-system",
"system_services_file": "ubains-modules-system.jar",
"java_meetingV2_services_path": "/data/services/api/java-meeting/java-meeting2.0",
"java_meetingV2_services_file": "ubains-meeting-inner-api-1.0-SNAPSHOT.jar",
"java_meetingV3_services_path": "/data/services/api/java-meeting/java-meeting3.0",
"java_meetingV3_services_file": "ubains-meeting-inner-api-1.0-SNAPSHOT.jar",
"java_meetingExtapi_services_path": "/data/services/api/java-meeting/java-meeting-extapi",
"java_meetingExtapi_services_file": "ubains-meeting-api-1.0-SNAPSHOT.jar",
"java_messageScheduling_services_path": "/data/services/api/java-meeting/java-message-scheduling",
"java_messageScheduling_services_file": "ubains-meeting-message-scheduling-1.0-SNAPSHOT.jar",
"java_quartz_services_path": "/data/services/api/java-meeting/java-quartz",
"java_quartz_services_file": "ubains-meeting-quartz-1.0-SNAPSHOT.jar"
}
}
}
}
\ No newline at end of file
# 远程更新脚本 - 待确认事项
## 文档说明
- 脚本路径:`AuxiliaryTool/ScriptTool/RemoteUpdate/remote_update.ps1`
- 创建时间:2026-03-11
- 状态:基础框架已完成,部分功能需完善
---
## 当前实现状态
### 已完成功能 ✅
| 功能模块 | 状态 | 说明 |
|----------|------|------|
| 脚本初始化 | ✅ 完成 | 目录创建、全局变量、编码设置 |
| 用户输入服务器信息 | ✅ 完成 | IP、端口、用户名、密码输入 |
| SSH连接测试 | ✅ 完成 | 30秒超时,3次重试机制 |
| 获取服务器信息 | ✅ 完成 | OS、架构、时间、磁盘空间、平台类型 |
| 磁盘空间检查 | ✅ 完成 | 小于5GB退出 |
| 系统类型选择 | ✅ 完成 | 4种系统类型选择 |
| 更新类型选择 | ✅ 完成 | 3种更新类型选择 |
| 创建更新目录 | ✅ 完成 | /home/update,重试3次 |
| 上传文件功能 | ✅ 完成 | 使用pscp.exe上传 |
| 数据库备份 | ✅ 完成 | 上传脚本、执行、导出 |
| 服务包备份框架 | ✅ 完成 | 函数已实现 |
| 执行更新脚本 | ✅ 完成 | 上传脚本、执行、获取返回值 |
| 生成更新报告 | ✅ 完成 | Markdown格式报告 |
| 日志输出 | ✅ 完成 | INFO/WARN/ERROR/OK四个级别 |
| 错误处理 | ✅ 完成 | 全局try-catch |
---
## 待完善功能 ⚠️
### 1. 更新包上传逻辑(步骤9)
#### 当前代码状态
```powershell
# 步骤9:上传更新包
# 这里需要根据系统类型和更新类型选择对应的更新包
# 暂时跳过,待更新包准备好后实现
Write-LogWarn "更新包上传功能需要根据具体配置实现"
```
#### 需要确认的内容
| 确认项 | 选项 | 说明 |
|--------|------|------|
| **更新包来源** | 选项A: 从 `update_package_new.json` 读取 | 根据系统类型和更新类型获取本地包路径 |
| | 选项B: 固定命名规则 | 如:`packages/{系统类型}_{更新类型}.zip` |
| | 选项C: 用户手动指定 | 每次运行时提示用户输入包路径 |
| **上传前校验** | 是否需要校验文件存在性 | 文件不存在时是否报错退出 |
#### 场景示例
**用户选择**:预定系统 + 前端更新
**需要明确**
- 本地更新包路径是什么?
- 例如:`./front/预定系统_前端.zip` 或其他?
---
### 2. 服务包备份逻辑(步骤11)
#### 当前代码状态
```powershell
# 步骤11:备份服务包
# 这里需要根据配置获取需要备份的服务路径
# 暂时跳过,待配置完善后实现
Write-LogWarn "服务包备份功能需要根据具体配置实现"
```
#### 需要确认的内容
| 确认项 | 选项 | 说明 |
|--------|------|------|
| **备份路径来源** | 选项A: 从 `update_type_mapping.json` 读取 | 根据平台类型+系统类型+更新类型获取服务路径 |
| | 选项B: 从 `update_package_old.json` 读取 | 获取旧版本服务路径 |
| | 选项C: 固定配置 | 预先定义好各系统的备份路径 |
| **备份范围** | 选项A: 只备份即将更新的服务 | 前端更新只备份前端相关目录 |
| | 选项B: 备份所有相关服务 | 全量备份该系统的所有服务 |
| **备份失败处理** | 选项A: 备份失败则退出程序 | 确保备份成功才继续 |
| | 选项B: 备份失败仅警告,继续执行 | 允许无备份更新 |
#### 配置文件结构参考
**update_type_mapping.json** 中已有配置结构:
```json
{
"新统一平台": {
"预定系统": {
"前端更新": {
"ai_services_path": "/data/services/web/pc/pc-vue2-ai",
"back_services_path": "/data/services/web/pc/pc-vue2-backstage",
...
}
}
}
}
```
**问题**
- 选择"预定系统"+"前端更新"时,是备份所有 `*_services_path` 还是有其他规则?
---
### 3. 更新包与服务包的关联关系
#### 待明确
```
用户选择:预定系统 + 前端更新
1. 上传的更新包是哪个文件?
└── 路径:?
2. 服务器上需要备份哪些目录?
└── 路径列表:?
3. 更新脚本需要什么参数?
└── 参数:前端更新
```
---
## 配置文件现状
### 已有的配置文件
| 文件 | 状态 | 用途 |
|------|------|------|
| `config/update_type_mapping.json` | ✅ 存在 | 服务路径映射(前端/后端各目录路径) |
| `config/update_package_old.json` | ✅ 存在 | 旧版本服务路径映射 |
| `config/update_package_new.json` | ✅ 存在 | 新版本本地包路径(./front, ./back) |
### update_package_new.json 内容
```json
{
"前端": "./front",
"后端": "./back"
}
```
**问题**:这个文件的含义是什么?
- `./front` 目录下是否存放了前端更新包?
- 更新包的命名规则是什么?
---
## 建议的实现方案
### 方案A:基于配置文件的自动化方案
**假设**
1. `./front` 目录下存放前端更新包,命名规则:`{系统类型}.zip`
2. `./back` 目录下存放后端更新包,命名规则:`{系统类型}.zip`
3. 备份时从 `update_type_mapping.json` 读取对应的服务路径
**实现逻辑**
```
预定系统 + 前端更新
上传:./front/预定系统.zip
备份:从 update_type_mapping.json 读取"新统一平台.预定系统.前端更新"下的所有路径
```
### 方案B:用户手动指定方案
**实现**
- 提示用户输入本地更新包路径
- 提示用户输入需要备份的服务器目录(或从配置选择)
### 方案C:混合方案(推荐)
**实现**
1. 优先尝试从配置自动识别
2. 配置不存在时提示用户手动输入
---
## 需要反馈的信息
请确认以下内容,以便完善脚本:
1. **更新包路径规则**
- 本地更新包存放在哪个目录?
- 命名规则是什么?
2. **服务备份路径规则**
- 是否从 `update_type_mapping.json` 读取?
- 选择"前端更新"时需要备份哪些目录?
3. **如果暂时不需要实现**
- 这两个功能是否可以留空,后续按需补充?
---
## 当前脚本可用性
### 可以正常使用的功能
- ✅ 服务器连接测试
- ✅ 服务器信息获取
- ✅ 磁盘空间检查
- ✅ 系统类型选择
- ✅ 更新类型选择
- ✅ 数据库备份(需 backup_db.sh 脚本)
- ✅ 更新脚本执行(需 service_update.sh 脚本)
- ✅ 报告生成
### 暂时跳过的功能
- ⚠️ 更新包自动上传(需确认路径规则)
- ⚠️ 服务包自动备份(需确认备份范围)
### 结论
**当前脚本框架完整,核心功能可用,待确认路径规则后可补充完善。**
---
*文档创建时间:2026-03-11*
*待反馈确认*
# 自动更新部署包版本
## 脚本
- `AuxiliaryTool/ScriptTool/RemoteUpdate`
## 服务器信息
### 测试服务器
- IP:192.168.5.44
......@@ -98,10 +100,10 @@
- main包:/data/offline_auto_unifiedPlatform/data/services/web/pc/pc-vue2-main
- index.html
- static文件夹
- meetngV2包:/data/offline_auto_unifiedPlatform/data/services/web/pc/pc-vue2-meetngV2
- meetngV2包:/data/offline_auto_unifiedPlatform/data/services/web/pc/pc-vue2-meetingV2
- index.html
- static文件夹
- meetngV3包:/data/offline_auto_unifiedPlatform/data/services/web/pc/pc-vue2-meetngV3
- meetngV3包:/data/offline_auto_unifiedPlatform/data/services/web/pc/pc-vue2-meetingV3
- index.html
- static文件夹
- meetingControl:/data/offline_auto_unifiedPlatform/data/services/web/pc/pc-vue2-meetingControl
......@@ -156,9 +158,28 @@
- UbainsDevOps文件夹
- uvoice文件夹
## 更新操作流程
1. 从网盘[\\192.168.9.9\发布版本\03服务器部署\15新统一平台\X86部署包\全量版]下载最新的部署包到打包服务器的/data目录下
2. 在打包服务器上解压缩tar.gz格式包,解压缩完成后删除tar.gz格式包和md5文件。
3. 从测试服务器上提取所有服务包,压缩成tar.gz格式传到打包服务器。
4. 在打包服务器上解压缩tar.gz格式包
5. 执行服务包更新替换操作,不需要做备份
6. 执行更新替换操作过程中恢复配置文件,如config.json和settingbus.conf文件。
7. 将/data/目录下的offline_auto_unifiedPlatform打压缩成tar.gz格式,并增加md5格式校验,文件命名:offline_auto_unifiedPlatform.tar.gz和offline_auto_unifiedPlatform.tar.gz.md5
8. 拷贝至网盘目录:[\\192.168.9.9\发布版本\03服务器部署\15新统一平台\X86部署包\全量版\版本更新-待验证]
9. 清理打包服务器上的临时文件。
10. 生成报告文件。
## 注意:
- 如果无法在linux上访问到网盘,那就先拷贝到本地目录[]
## 异常处理
- 在服务包覆盖过程中如果覆盖失败(如中断),立即停止本次更新操作,输出失败的文件名和失败原因。
- 覆盖中断后可重新执行覆盖操作来恢复。
## 部署包更新说明
- 前端包更新说明:
- 前端包更新时需要将打包服务器上原static中的config.json或config.js文件覆盖到更新的服务包中的static目录下。
- 前端包更新时需要将打包服务器上原static中的config.json文件覆盖到更新的服务包中的static目录下。
- jar格式后端包更新说明
- 直接覆盖更新
- cmdb文件夹后端包更新说明:
......@@ -172,4 +193,8 @@
## 核验材料
1. 所有的操作需日志记录说明
2. 所有操作结束后需输出报告说明,报告以md格式存储。
- 需记录新旧版本对比
- 需记录所有操作的详细步骤
- 记录服务包的大小
- 操作耗时
- 更新成功或失败的状态
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论