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

fix(edit):调整自动化部署包的更新验证流程

上级 561f6ecc
......@@ -448,7 +448,62 @@ class X86PackageUpdate:
tar_size = self._get_remote_file_size(self.test_ssh, remote_tmp_tar)
self.log(f"服务包打包完成,大小: {self._format_size(tar_size)}")
# 下载到本地临时目录
# 清理测试服务器上的临时文件
self._exec_test_cmd(f'rm -f "{remote_tmp_tar}"')
# 直接在测试服务器上通过SSH传输到打包服务器(避免本地中转)
build_tmp_tar = '/data/services_update.tar.gz'
self._exec_build_cmd(f'rm -f "{build_tmp_tar}"')
# 方式1:尝试服务器间直接传输(更快,不经过本地)
self.log("正在通过服务器间直接传输...")
scp_cmd = (
f'sshpass -p \'{self.build_server["password"]}\' '
f'scp -o StrictHostKeyChecking=no -o ConnectTimeout=30 '
f'"{remote_tmp_tar}" '
f'{self.build_server["username"]}@{self.build_server["host"]}:{build_tmp_tar}'
)
# 先用tar管道方式直接传输(不需要sshpass)
pipe_cmd = (
f'cd /data/services && tar -czf - {dirs_str} '
f'| ssh -o StrictHostKeyChecking=no '
f'{self.build_server["username"]}@{self.build_server["host"]} '
f'\'cat > {build_tmp_tar}\''
)
# 检查测试服务器到打包服务器的SSH连通性
test_ssh_cmd = (
f'ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 '
f'{self.build_server["username"]}@{self.build_server["host"]} '
f'\'echo OK\' 2>/dev/null'
)
exit_code, out, err = self._exec_test_cmd(test_ssh_cmd, timeout=15)
if "OK" in out:
# 服务器间SSH已互通,直接管道传输
self.log("服务器间SSH互通,使用管道直接传输(无需本地中转)...")
# 清理之前的打包文件
self._exec_test_cmd(f'rm -f "{remote_tmp_tar}"')
# 直接管道传输
exit_code, out, err = self._exec_test_cmd(pipe_cmd, timeout=3600)
if exit_code == 0:
self.log("服务器间传输完成")
else:
self.log(f"管道传输失败: {err},回退到本地中转方式", "WARN")
# 回退:重新打包并通过本地中转
exit_code = -1 # 标记需要回退
else:
exit_code = -1 # 标记需要回退
self.log("服务器间SSH未互通,使用本地中转方式", "WARN")
# 回退方式:通过本地机器中转
if exit_code != 0:
# 确保测试服务器上有打包文件
test_size = self._get_remote_file_size(self.test_ssh, remote_tmp_tar)
if test_size == 0:
self.log("重新在测试服务器上打包...")
self._exec_test_cmd(f'cd /data/services && tar -czf "{remote_tmp_tar}" {dirs_str}')
local_tar = os.path.join(self.temp_dir, 'services_update.tar.gz')
self.log("正在下载服务包到本地...")
try:
......@@ -460,8 +515,9 @@ class X86PackageUpdate:
self._record_step(3, "测试服务器打包", "失败", msg)
return False
# 上传到打包服务器
build_tmp_tar = '/tmp/services_update.tar.gz'
# 清理测试服务器临时文件(节省空间)
self._exec_test_cmd(f'rm -f "{remote_tmp_tar}"')
self.log("正在上传服务包到打包服务器...")
try:
self.build_sftp.put(local_tar, build_tmp_tar)
......@@ -472,6 +528,10 @@ class X86PackageUpdate:
self._record_step(3, "测试服务器打包", "失败", msg)
return False
# 清理本地临时文件
if os.path.exists(local_tar):
os.remove(local_tar)
# 清理测试服务器临时文件
self._exec_test_cmd(f'rm -f "{remote_tmp_tar}"')
# 清理本地临时文件
......@@ -492,8 +552,8 @@ class X86PackageUpdate:
self.log("步骤4:解压测试服务包")
self.log("=" * 50)
build_tmp_tar = '/tmp/services_update.tar.gz'
extract_dir = '/tmp/services_update'
build_tmp_tar = '/data/services_update.tar.gz'
extract_dir = '/data/services_update'
# 创建解压目录
self._exec_build_cmd(f'rm -rf "{extract_dir}"')
......@@ -527,7 +587,7 @@ class X86PackageUpdate:
self.log("=" * 50)
services_base = '/data/offline_auto_unifiedPlatform/data/services'
update_base = '/tmp/services_update/services'
update_base = '/data/services_update/services'
all_success = True
# ---------- 更新前端服务 ----------
......@@ -548,7 +608,7 @@ class X86PackageUpdate:
# 保存原始 config.json
config_saved = False
config_backup = f"/tmp/config_backup_{svc_name.replace(' ', '_')}.json"
config_backup = f"/data/config_backup_{svc_name.replace(' ', '_')}.json"
exit_code, _, _ = self._exec_build_cmd(
f'cp "{config_file}" "{config_backup}" 2>/dev/null && echo "SAVED"'
)
......@@ -663,7 +723,7 @@ class X86PackageUpdate:
# 保存原始 settingbus.conf
config_saved = False
config_backup = (
f"/tmp/settingbus_backup_{svc_name.replace(' ', '_')}.conf"
f"/data/settingbus_backup_{svc_name.replace(' ', '_')}.conf"
)
exit_code, _, _ = self._exec_build_cmd(
f'cp "{config_file}" "{config_backup}" 2>/dev/null '
......@@ -723,7 +783,7 @@ class X86PackageUpdate:
self.log(f" {svc_name} 更新成功")
# 清理解压的临时目录
self._exec_build_cmd('rm -rf /tmp/services_update')
self._exec_build_cmd('rm -rf /data/services_update')
self.log("已清理临时解压目录")
self._record_step(
......@@ -863,11 +923,11 @@ class X86PackageUpdate:
f'rm -f "{deploy_dir}/{package_name}.tar.gz" '
f'"{deploy_dir}/{package_name}.tar.gz.md5"'
)
self._exec_build_cmd('rm -rf /tmp/services_update')
self._exec_build_cmd('rm -rf /data/services_update')
# 清理打包服务器上的配置备份文件
self._exec_build_cmd('rm -f /tmp/config_backup_*.json')
self._exec_build_cmd('rm -f /tmp/settingbus_backup_*.conf')
self._exec_build_cmd('rm -f /data/config_backup_*.json')
self._exec_build_cmd('rm -f /data/settingbus_backup_*.conf')
# 清理本地临时目录
self.log("清理本地临时文件...")
......
......@@ -169,6 +169,7 @@
8. 拷贝至网盘目录:[Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版\版本更新-待验证]
9. 清理打包服务器上的临时文件。
10. 生成报告文件。
11. 根据[Docs/PRD/远程自动化部署/_PRD_远程自动化部署_需求文档.md]执行部署操作
## 异常处理
- 在服务包覆盖过程中如果覆盖失败(如中断),立即停止本次更新操作,输出失败的文件名和失败原因。
......
# 计划执行_X86自动更新部署包版本
> 版本:V1.0
> 版本:V1.1
> 创建日期:2026-06-03
> 基于文档:`_PRD_X86自动更新部署包版本_需求文档.md`
> 交付物:
......@@ -334,13 +334,13 @@ python x86_package_update.py --help
| 阶段 | 状态 | 完成时间 | 备注 |
|------|------|----------|------|
| 阶段一:基础框架与配置 | ⬜ 待执行 | | |
| 阶段二:网盘下载与解压 | ⬜ 待执行 | | |
| 阶段三:测试服务器取包 | ⬜ 待执行 | | |
| 阶段一:基础框架与配置 | ✅ 已完成 | 2026-06-03 | config.json + 主脚本框架 |
| 阶段二:网盘下载与解压 | ✅ 已完成 | 2026-06-03 | MD5校验通过,8.67GB上传+解压成功 |
| 阶段三:测试服务器取包 | 🔄 测试中 | | 修复auth路径 auth-sso-aut→auth-sso-auth,增加目录存在性检查 |
| 阶段四:服务替换与配置保留 | ⬜ 待执行 | | |
| 阶段五:打包上传与清理 | ⬜ 待执行 | | |
| 阶段六:报告生成 | ⬜ 待执行 | | |
| 完整流程测试 | ⬜ 待执行 | | |
| 完整流程测试 | 🔄 测试中 | | 步骤1-2已验证通过 |
---
......@@ -370,7 +370,7 @@ python x86_package_update.py --help
| 序号 | 服务名称 | 相对路径 | 文件名 |
|------|---------|---------|--------|
| 1 | auth包 | api/auth/auth-sso-aut | ubains-auth.jar |
| 1 | auth包 | api/auth/auth-sso-auth | ubains-auth.jar |
| 2 | gatway包 | api/auth/auth-sso-gatway | ubains-gateway.jar |
| 3 | system包 | api/auth/auth-sso-system | ubains-modules-system.jar |
| 4 | java2.0包 | api/java-meeting/java-meeting2.0 | ubains-meeting-inner-api-1.0-SNAPSHOT.jar |
......@@ -394,4 +394,4 @@ python x86_package_update.py --help
---
*文档创建日期:2026-06-03*
*文档状态:待执行*
*文档状态:测试中*
......@@ -3,8 +3,8 @@
### 部署脚本
- AuxiliaryTool/ScriptTool/RemoteDeploy
### 部署包路径
- ARM架构:已上传至对应服务器
- X86架构:已上传至对应服务器
- ARM架构:[Z:\发布版本\03服务器部署\15新统一平台\ARM部署包\全量版\版本更新-待验证],从这里下载到服务器的/data/目录下
- X86架构:[Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版\版本更新-待验证],从这里下载到服务器的/data/目录下
### 目标服务器
- X86架构-欧拉服务器:192.168.5.52 root Ubains@123
......@@ -12,7 +12,6 @@
- ARM架构-Ubuntu服务器:192.168.9.76 admin Ubains@123 切换root权限需执行`sudo -s`,密码也是Ubains@123
- ARM架构-麒麟V10服务器:192.168.9.83 root Ubains@123(先不执行部署)
### 部署文档
- X86部署文档路径:"Docs/PRD/远程自动化部署/X86架构_新统一平台自动化部署操作指导.md"
- ARM部署文档路径:"Docs/PRD/远程自动化部署/ARM架构_新统一平台自动化部署操作指导.md"
......@@ -68,9 +67,9 @@
- 部署包命名规则:
- X86架构:`offline_auto_unifiedPlatform.tar.gz``offline_auto_unifiedPlatform.tar.gz.md5`
- ARM架构:`arm_offline_auto_unifiedPlatform.tar.gz``arm_offline_auto_unifiedPlatform.tar.gz.md5`
- 部署包输出到本地
- X86架构:`E:\自动化部署\X86-5.52\offline_auto_unifiedPlatform.tar.gz``E:\自动化部署\X86-5.52\offline_auto_unifiedPlatform.tar.gz.md5`
- ARM架构:`E:\自动化部署\ARM-9.75\arm_offline_auto_unifiedPlatform.tar.gz``E:\自动化部署\ARM-9.75\arm_offline_auto_unifiedPlatform.tar.gz.md5`
- 部署包输出:
- X86架构:`Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版`
- ARM架构:`Z:\发布版本\03服务器部署\15新统一平台\ARM部署包\全量版`
## 验收要求
1. 自动化部署完成后检查容器状态是否正常,核查容器日志是否正确。
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论