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

feat(update): 添加路径映射功能以解决目录名不一致问题

- 在配置文件中添加 path_mapping 字段,用于测试服务器与打包服务器之间的路径转换
- 在更新脚本中实现路径映射逻辑,支持动态重命名目录结构
- 更新前端、后端及配置文件复制逻辑,统一使用映射后的路径
- 修正ARM架构部署脚本中的镜像版本号和文件名不一致问题
- 实现路径映射验证机制,确保目录存在后再执行重命名操作
上级 d7a1ecb9
......@@ -48,5 +48,9 @@
{"name": "cmdb包", "path": "api/python-cmdb", "config_file": "cmdb/bus/config/settingbus.conf"},
{"name": "voice包", "path": "api/python-voice", "config_file": "uvoice/bus/config/settingbus.conf"}
]
},
"path_mapping": {
"web/pc/pc-vue2-meetngV2": "web/pc/pc-vue2-meetingV2",
"web/pc/pc-vue2-meetngV3": "web/pc/pc-vue2-meetingV3"
}
}
......@@ -42,6 +42,7 @@ class X86PackageUpdate:
self.build_server = self.config['build_server']
self.nas = self.config['nas']
self.services = self.config['services']
self.path_mapping = self.config.get('path_mapping', {})
# SSH/SFTP 客户端
self.test_ssh = None
......@@ -242,6 +243,10 @@ class X86PackageUpdate:
else:
return f"{size_bytes / (1024 * 1024 * 1024):.2f} GB"
def _get_mapped_path(self, path):
"""获取映射后的路径(测试服务器路径 → 打包服务器路径)"""
return self.path_mapping.get(path, path)
def _check_disk_space(self, ssh_client, path, required_mb):
"""检查远程服务器磁盘剩余空间"""
stdin, stdout, stderr = ssh_client.exec_command(
......@@ -572,6 +577,25 @@ class X86PackageUpdate:
return False
self.log("解压完成")
# 路径映射:将测试服务器的目录名重命名为打包服务器的目录名
if self.path_mapping:
self.log("执行路径映射重命名...")
for test_path, build_path in self.path_mapping.items():
old_dir = f"{extract_dir}/services/{test_path}"
new_dir = f"{extract_dir}/services/{build_path}"
exit_code, out, err = self._exec_build_cmd(
f'if [ -d "{old_dir}" ]; then '
f'mv "{old_dir}" "{new_dir}" && echo "RENAMED"; fi'
)
if "RENAMED" in out:
self.log(f" 路径映射: {test_path} -> {build_path}")
else:
self.log(
f" 路径映射跳过: {test_path} (目录不存在或已是正确名称)",
"WARN"
)
self.log("路径映射完成")
# 清理压缩包
self._exec_build_cmd(f'rm -f "{build_tmp_tar}"')
......@@ -595,8 +619,9 @@ class X86PackageUpdate:
for svc in self.services['frontend']:
svc_name = svc['name']
svc_path = svc['path']
src_dir = f"{update_base}/{svc_path}"
dst_dir = f"{services_base}/{svc_path}"
mapped_path = self._get_mapped_path(svc_path)
src_dir = f"{update_base}/{mapped_path}"
dst_dir = f"{services_base}/{mapped_path}"
config_file = f"{dst_dir}/static/config.json"
self.log(f"正在更新前端服务: {svc_name} ({svc_path})")
......@@ -670,8 +695,9 @@ class X86PackageUpdate:
svc_name = svc['name']
svc_path = svc['path']
jar_file = svc['file']
src_file = f"{update_base}/{svc_path}/{jar_file}"
dst_file = f"{services_base}/{svc_path}/{jar_file}"
mapped_path = self._get_mapped_path(svc_path)
src_file = f"{update_base}/{mapped_path}/{jar_file}"
dst_file = f"{services_base}/{mapped_path}/{jar_file}"
self.log(f"正在更新后端服务: {svc_name} ({jar_file})")
......@@ -711,8 +737,9 @@ class X86PackageUpdate:
svc_name = svc['name']
svc_path = svc['path']
config_relative = svc['config_file']
src_dir = f"{update_base}/{svc_path}"
dst_dir = f"{services_base}/{svc_path}"
mapped_path = self._get_mapped_path(svc_path)
src_dir = f"{update_base}/{mapped_path}"
dst_dir = f"{services_base}/{mapped_path}"
config_file = f"{dst_dir}/{config_relative}"
self.log(f"正在更新后端服务: {svc_name} ({svc_path})")
......
......@@ -142,7 +142,7 @@ function mysql_arm() {
# --- 配置参数 ---
local container_name="umysql"
local image_tar="/data/temp/arm_mysql8.0.46.tar.gz"
local image_name="mysql:8.0"
local image_name="mysql:8.0.46"
local image_id="4c5574ba4b04"
local mysql_root_password="dNrprU&2S"
local mysql_port="8306"
......@@ -376,7 +376,7 @@ function redis_arm()
{
# ------------------- 定义变量 -------------------
local container_name="uredis"
local image_tar="/data/temp/arm_redis-8.8.0.tar.gz"
local image_tar="/data/temp/arm_redis8.8.0.tar.gz"
local image_name="redis:8"
local image_id="3bd8c109f88b"
local redis_conf_host="/data/middleware/redis/config/redis.conf"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论