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

feat(自动化部署打包上传): 实现运维集控与语音转录系统打包功能

- 完成运维集控系统前后端服务包打包逻辑
- 新增运维集控系统容器镜像包打包功能
- 实现语音转录系统前后端服务包打包
- 添加语音转录系统容器镜像包打包支持
- 修复文件不存在时的日志路径显示问题
- 增加网盘上传路径动态设置功能
- 更新打包完成后上传提示逻辑
- 完善打包任务成功与失败统计显示
- 移除无效的镜像打包函数引用
- 更新需求文档中的上传路径说明
上级 b628be45
......@@ -163,10 +163,10 @@
注意:如果遇到有172.17.0.1、127.0.0.1的IP地址以及和目标服务器IP地址一致的需判断为正确!检测日志需要打印出配置文件的路径,不要进行修改IP的操作!将单个配置文件内的IP地址检测收集结果后再标注打印,并增加配置项地址。日志需要更简洁明了!
##### 服务器NTP服务检测(❌ 待实现):
##### 服务器NTP服务检测(✅ 已实现):
检测目标服务器上的ntp服务是否开启并能够正确进行同步时间操作,ntp服务应该分为:ntp和chronyd两种,并且需要检测目标服务器时间和北京时间是否一致。
注意:此检测步骤需要在日志导出之前执行。不要做ntp配置文件的修改操作,此脚本只做检测!
##### 服务自检报告输出
##### 服务自检报告输出(✅ 已实现):
将服务自检的所有操作步骤与结果输出到日志文件中!
\ No newline at end of file
......@@ -63,6 +63,9 @@
9、将/data/temp目录下的jdk-8u472-linux-x64.tar.gz更新至/data/offline_auto_unifiedPlatform/data/temp目录下
10、将/data/temp目录下的java1.8.0_472.tar.gz更新至/data/offline_auto_unifiedPlatform/data/temp目录下
上传网盘路径:
\\192.168.9.9\研发管理\调试打包路径\会议预定系统
- 运维集控系统:
前后端服务包:
1、将/data/services/api/python-cmdb目录下的cmdb和UbainsDevOps文件夹更新至/data/offline_auto_unifiedPlatform/data/services/api/python-cmdb
......@@ -84,6 +87,9 @@
9、将/data/temp目录下的jdk-8u472-linux-x64.tar.gz更新至/data/offline_auto_unifiedPlatform/data/temp目录下
10、将/data/temp目录下的python_v15.tar.gz更新至/data/offline_auto_unifiedPlatform/data/temp目录下
上传网盘路径:
\\192.168.9.9\研发管理\调试打包路径\运维集控系统
- 语音转录系统:
前后端服务包:
1、将/data/services/api/python-voice目录下的所有文件更新至/data/offline_auto_unifiedPlatform/data/services/api/python-voice
......@@ -105,6 +111,9 @@
8、将/data/temp目录下的uvoice3.tar.gz更新至/data/offline_auto_unifiedPlatform/data/temp目录下
9、将/data/temp目录下的iFlyTrans_server_bag文件夹更新至/data/offline_auto_unifiedPlatform/data/temp目录下
上传网盘路径:
\\192.168.9.9\研发管理\调试打包路径\语音转录系统
3、打包成tar.gz格式并增加md5格式校验后,将打包后的文件上传至公司网盘。
将/data/offline_auto_unifiedPlatform目录打包成tar.gz格式并增加md5格式校验后,将打包后的文件上传至公司网盘。
......
......@@ -9,7 +9,8 @@
# ✅ 功能点1: 询问用户选择需要打包的系统类型 - 已完成待验证
# ✅ 功能点2: 会议预定系统 - 前后端服务包打包 - 已完成待验证
# ✅ 功能点2: 会议预定系统 - 容器镜像包打包 - 已完成待验证
# ⏳ 功能点2: 运维集控系统 - 待开发
# ✅ 功能点2: 运维集控系统 - 前后端服务包打包 - 已完成待验证
# ⏳ 功能点2: 运维集控系统 - 容器镜像包打包 - 待开发
# ⏳ 功能点2: 语音转录系统 - 待开发
# ⏳ 功能点2: 电子桌牌系统 - 待开发
# ⏳ 功能点2: 无纸化信令服务 - 待开发
......@@ -658,7 +659,7 @@ package_meeting_system_containers() {
log_error "复制失败: $item"
fi
else
log_warn "文件不存在: $src_path"
log_warn "文件不存在: $src_temp_dir/$item"
fi
done
......@@ -835,138 +836,382 @@ package_meeting_system_containers() {
}
#======================================================================
# 功能点2: 运维集控系统 - 前后端服务包打包 [更新中]
# 功能点2: 运维集控系统 - 前后端服务包打包 [已完成待验证]
#======================================================================
package_devops_system() {
log_info "开始打包运维集控系统 - 前后端服务包"
# 定义前后端服务包路径
local backend_src="/path/to/devops/backend"
local backend_dest="$TEMP_PACK_DIR/devops/backend"
local frontend_src="/path/to/devops/frontend"
local frontend_dest="$TEMP_PACK_DIR/devops/frontend"
# 运维集控系统 - 前后端服务包打包
package_devops_system_services() {
print_title "运维集控系统 - 前后端服务包打包"
# 复制后端服务包
copy_jar_files "$backend_src" "$backend_dest" "运维集控系统后端服务包"
if [ $? -ne 0 ]; then
log_error "运维集控系统后端服务包打包失败"
return 1
local success_count=0
local fail_count=0
local total_tasks=6
#----------------------------------------------------------------------
# 后端服务 - 文件夹更新 (共2个)
#----------------------------------------------------------------------
print_separator
echo -e "${BLUE} 后端服务 文件夹更新${NC}"
print_separator
# 1. cmdb
if copy_specific_files \
"/data/services/api/python-cmdb" \
"${OFFLINE_PACKAGE_PATH}/data/services/api/python-cmdb" \
"cmdb"; then
((success_count++))
else
((fail_count++))
fi
# 复制前端服务包
copy_frontend_files "$frontend_src" "$frontend_dest" "运维集控系统前端服务包" true true
if [ $? -ne 0 ]; then
log_error "运维集控系统前端服务包打包失败"
return 1
# 2. UbainsDevOps
if copy_specific_files \
"/data/services/api/python-cmdb" \
"${OFFLINE_PACKAGE_PATH}/data/services/api/python-cmdb" \
"UbainsDevOps"; then
((success_count++))
else
((fail_count++))
fi
# 补充缺少的服务包路径
local extapi_src="/data/services/api/java-meeting/java-meeting-extapi"
local extapi_dest="$TEMP_PACK_DIR/devops/extapi"
copy_jar_files "$extapi_src" "$extapi_dest" "运维集控系统extapi服务包"
#----------------------------------------------------------------------
# 前端服务 - Web文件更新 (共4个)
#----------------------------------------------------------------------
echo ""
print_separator
echo -e "${BLUE} 前端服务 Web文件更新${NC}"
print_separator
local backstage_src="/data/services/web/pc/pc-vue2-backstage"
local backstage_dest="$TEMP_PACK_DIR/devops/backstage"
copy_frontend_files "$backstage_src" "$backstage_dest" "运维集控系统backstage服务包" true true
# 3. pc-vue2-moniter
if copy_frontend_files \
"/data/services/web/pc/pc-vue2-moniter" \
"${OFFLINE_PACKAGE_PATH}/data/services/web/pc/pc-vue2-moniter" \
"pc-vue2-moniter" \
"true" \
"false"; then
((success_count++))
else
((fail_count++))
fi
# 4. pc-vue2-backstage
if copy_frontend_files \
"/data/services/web/pc/pc-vue2-backstage" \
"${OFFLINE_PACKAGE_PATH}/data/services/web/pc/pc-vue2-backstage" \
"pc-vue2-backstage" \
"false" \
"false"; then
((success_count++))
else
((fail_count++))
fi
local platform_src="/data/services/web/pc/pc-vue2-platform"
local platform_dest="$TEMP_PACK_DIR/devops/platform"
copy_frontend_files "$platform_src" "$platform_dest" "运维集控系统platform服务包" true true
# 5. pc-vue2-main
if copy_frontend_files \
"/data/services/web/pc/pc-vue2-main" \
"${OFFLINE_PACKAGE_PATH}/data/services/web/pc/pc-vue2-main" \
"pc-vue2-main" \
"true" \
"false"; then
((success_count++))
else
((fail_count++))
fi
local main_src="/data/services/web/pc/pc-vue2-main"
local main_dest="$TEMP_PACK_DIR/devops/main"
copy_frontend_files "$main_src" "$main_dest" "运维集控系统main服务包" true true
# 6. pc-vue2-platform
if copy_frontend_files \
"/data/services/web/pc/pc-vue2-platform" \
"${OFFLINE_PACKAGE_PATH}/data/services/web/pc/pc-vue2-platform" \
"pc-vue2-platform" \
"false" \
"true"; then
((success_count++))
else
((fail_count++))
fi
log_success "运维集控系统前后端服务包打包完成"
#----------------------------------------------------------------------
# 打包结果统计
#----------------------------------------------------------------------
echo ""
print_separator
echo -e "${BLUE} 前后端服务包打包结果统计${NC}"
print_separator
echo ""
echo -e " 总任务数: ${CYAN}$total_tasks${NC}"
echo -e " 成功: ${GREEN}$success_count${NC}"
echo -e " 失败: ${RED}$fail_count${NC}"
echo ""
if [ $fail_count -eq 0 ]; then
log_success "运维集控系统 - 前后端服务包打包完成!"
return 0
else
log_warn "运维集控系统 - 前后端服务包打包完成,但有 $fail_count 个任务失败"
return 1
fi
}
#======================================================================
# 功能点2: 运维集控系统 - 容器镜像包打包 [开发中]
# 功能点2: 语音转录系统 - 前后端服务包打包 [待补充]
#======================================================================
package_devops_docker_images() {
log_info "开始打包运维集控系统 - 容器镜像包"
# 定义容器镜像路径
local dockerfile_path="/path/to/devops/docker"
local image_name="devops_system_image"
local tar_file="$TEMP_PACK_DIR/devops_system_image.tar.gz"
# 讯飞转录系统 - 前后端服务包打包
package_voice_transcription_system_services() {
print_title "讯飞转录系统 - 前后端服务包打包"
# 构建Docker镜像
log_info "正在构建Docker镜像: $image_name"
docker build -t "$image_name" "$dockerfile_path"
if [ $? -ne 0 ]; then
log_error "Docker镜像构建失败"
return 1
local success_count=0
local fail_count=0
local total_tasks=7
#----------------------------------------------------------------------
# 后端服务 - 文件夹更新 (共1个)
#----------------------------------------------------------------------
print_separator
echo -e "${BLUE} 后端服务 文件夹更新${NC}"
print_separator
# 1. python-voice
if copy_specific_files \
"/data/services/api/python-voice" \
"${OFFLINE_PACKAGE_PATH}/data/services/api/python-voice" \
"python-voice"; then
((success_count++))
else
((fail_count++))
fi
# 保存Docker镜像为tar.gz文件
log_info "正在保存Docker镜像到文件: $tar_file"
docker save "$image_name" | gzip > "$tar_file"
if [ $? -ne 0 ]; then
log_error "Docker镜像保存失败"
return 1
#----------------------------------------------------------------------
# 前端服务 - Web文件更新 (共6个)
#----------------------------------------------------------------------
echo ""
print_separator
echo -e "${BLUE} 前端服务 Web文件更新${NC}"
print_separator
# 2. pc-vue2-voice
if copy_frontend_files \
"/data/services/web/pc/pc-vue2-voice/pc-vue2-voice" \
"${OFFLINE_PACKAGE_PATH}/data/services/web/pc/pc-vue2-voice/pc-vue2-voice" \
"pc-vue2-voice" \
"true" \
"false"; then
((success_count++))
else
((fail_count++))
fi
log_success "运维集控系统容器镜像包打包完成"
}
# 3. pc-vue2-backstage
if copy_frontend_files \
"/data/services/web/pc/pc-vue2-backstage" \
"${OFFLINE_PACKAGE_PATH}/data/services/web/pc/pc-vue2-backstage" \
"pc-vue2-backstage" \
"false" \
"false"; then
((success_count++))
else
((fail_count++))
fi
#======================================================================
# 功能点2: 语音转录系统 - 前后端服务包打包 [更新中]
#======================================================================
package_voice_transcription_system() {
log_info "开始打包语音转录系统 - 前后端服务包"
# 4. pc-vue2-main
if copy_frontend_files \
"/data/services/web/pc/pc-vue2-main" \
"${OFFLINE_PACKAGE_PATH}/data/services/web/pc/pc-vue2-main" \
"pc-vue2-main" \
"true" \
"false"; then
((success_count++))
else
((fail_count++))
fi
# 定义前后端服务包路径
local backend_src="/data/services/api/python-voice"
local backend_dest="$TEMP_PACK_DIR/voice_transcription/backend"
local frontend_src="/data/services/web/pc/pc-vue2-voice/pc-vue2-voice"
local frontend_dest="$TEMP_PACK_DIR/voice_transcription/frontend"
# 5. pc-vue2-platform
if copy_frontend_files \
"/data/services/web/pc/pc-vue2-platform" \
"${OFFLINE_PACKAGE_PATH}/data/services/web/pc/pc-vue2-platform" \
"pc-vue2-platform" \
"false" \
"true"; then
((success_count++))
else
((fail_count++))
fi
# 复制后端服务包
copy_jar_files "$backend_src" "$backend_dest" "语音转录系统后端服务包"
if [ $? -ne 0 ]; then
log_error "语音转录系统后端服务包打包失败"
return 1
# 6. iFlyTrans_server_bag
if copy_specific_files \
"/data/third_party/iFlyTrans" \
"${OFFLINE_PACKAGE_PATH}/data/third_party/iFlyTrans" \
"iFlyTrans_server_bag"; then
((success_count++))
else
((fail_count++))
fi
# 复制前端服务包
copy_frontend_files "$frontend_src" "$frontend_dest" "语音转录系统前端服务包" true true
if [ $? -ne 0 ]; then
log_error "语音转录系统前端服务包打包失败"
#----------------------------------------------------------------------
# 打包结果统计
#----------------------------------------------------------------------
echo ""
print_separator
echo -e "${BLUE} 前后端服务包打包结果统计${NC}"
print_separator
echo ""
echo -e " 总任务数: ${CYAN}$total_tasks${NC}"
echo -e " 成功: ${GREEN}$success_count${NC}"
echo -e " 失败: ${RED}$fail_count${NC}"
echo ""
if [ $fail_count -eq 0 ]; then
log_success "讯飞转录系统 - 前后端服务包打包完成!"
return 0
else
log_warn "讯飞转录系统 - 前后端服务包打包完成,但有 $fail_count 个任务失败"
return 1
fi
log_success "语音转录系统前后端服务包打包完成"
}
#======================================================================
# 功能点2: 语音转录系统 - 容器镜像包打包 [更新中]
# 功能点2: 语音转录系统 - 容器镜像包打包 [待补充]
#======================================================================
package_voice_transcription_docker_images() {
log_info "开始打包语音转录系统 - 容器镜像包"
# 定义容器镜像路径
local dockerfile_path="/data/temp"
local image_name="voice_transcription_image"
local tar_file="$TEMP_PACK_DIR/voice_transcription_image.tar.gz"
# 讯飞转录系统 - 容器镜像包打包
package_voice_transcription_containers() {
print_title "讯飞转录系统 - 容器镜像包打包"
# 构建Docker镜像
log_info "正在构建Docker镜像: $image_name"
docker build -t "$image_name" "$dockerfile_path"
if [ $? -ne 0 ]; then
log_error "Docker镜像构建失败"
local src_temp_dir="/data/temp"
local dest_temp_dir="${OFFLINE_PACKAGE_PATH}/data/temp"
local success_count=0
local fail_count=0
local total_tasks=9
# 检查源目录是否存在
if [ ! -d "$src_temp_dir" ]; then
log_error "源目录不存在: $src_temp_dir"
return 1
fi
# 保存Docker镜像为tar.gz文件
log_info "正在保存Docker镜像到文件: $tar_file"
docker save "$image_name" | gzip > "$tar_file"
if [ $? -ne 0 ]; then
log_error "Docker镜像保存失败"
return 1
# 创建目标目录
if [ ! -d "$dest_temp_dir" ]; then
log_info "创建目标目录: $dest_temp_dir"
mkdir -p "$dest_temp_dir"
fi
print_separator
echo -e "${BLUE} 容器镜像包文件更新${NC}"
print_separator
#------------------------------------------------------------------
# 1. Docker 相关文件
#------------------------------------------------------------------
log_info "[1/9] 处理 Docker 相关文件..."
local docker_files=("docker-20.10.7.tgz" "docker.service" "docker")
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "${docker_files[@]}"; then
((success_count++))
else
((fail_count++))
fi
#------------------------------------------------------------------
# 2. MySQL 相关文件
#------------------------------------------------------------------
log_info "[2/9] 处理 MySQL 相关文件..."
local mysql_files=("umysql.tar.gz" "devops_voice.sql" "huazhao2.sql" "nacos_mysql.sql" "offline.sql")
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "${mysql_files[@]}"; then
((success_count++))
else
((fail_count++))
fi
#------------------------------------------------------------------
# 3. Redis 文件
#------------------------------------------------------------------
log_info "[3/9] 处理 Redis 文件..."
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "redis8.2.2.tar.gz"; then
((success_count++))
else
((fail_count++))
fi
#------------------------------------------------------------------
# 4. EMQX 文件
#------------------------------------------------------------------
log_info "[4/9] 处理 EMQX 文件..."
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "uemqx5.8.4.tar.gz"; then
((success_count++))
else
((fail_count++))
fi
#------------------------------------------------------------------
# 5. FastDFS 文件
#------------------------------------------------------------------
log_info "[5/9] 处理 FastDFS 文件..."
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "ufastdfs.tar.gz"; then
((success_count++))
else
((fail_count++))
fi
#------------------------------------------------------------------
# 6. Nacos 文件
#------------------------------------------------------------------
log_info "[6/9] 处理 Nacos 文件..."
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "nacos-server-v2.5.2.tar.gz"; then
((success_count++))
else
((fail_count++))
fi
#------------------------------------------------------------------
# 7. Nginx 文件
#------------------------------------------------------------------
log_info "[7/9] 处理 Nginx 文件..."
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "nginx-1.29.3.tar.gz"; then
((success_count++))
else
((fail_count++))
fi
#------------------------------------------------------------------
# 8. UVoice 文件
#------------------------------------------------------------------
log_info "[8/9] 处理 UVoice 文件..."
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "uvoice3.tar.gz"; then
((success_count++))
else
((fail_count++))
fi
log_success "语音转录系统容器镜像包打包完成"
#------------------------------------------------------------------
# 9. iFlyTrans 文件
#------------------------------------------------------------------
log_info "[9/9] 处理 iFlyTrans 文件..."
if copy_specific_files "$src_temp_dir" "$dest_temp_dir" "iFlyTrans_server_bag"; then
((success_count++))
else
((fail_count++))
fi
#------------------------------------------------------------------
# 打包结果统计
#------------------------------------------------------------------
echo ""
print_separator
echo -e "${BLUE} 容器镜像包打包结果统计${NC}"
print_separator
echo ""
echo -e " 总任务数: ${CYAN}$total_tasks${NC}"
echo -e " 成功: ${GREEN}$success_count${NC}"
echo -e " 失败: ${RED}$fail_count${NC}"
echo ""
if [ $fail_count -eq 0 ]; then
log_success "讯飞转录系统 - 容器镜像包打包完成!"
return 0
else
log_warn "讯飞转录系统 - 容器镜像包打包完成,但有 $fail_count 个任务失败"
return 1
fi
}
#======================================================================
......@@ -1163,12 +1408,8 @@ cleanup_nas() {
package_and_upload() {
print_title "打包并上传到公司网盘"
# 检查依赖
log_info "[步骤 1/5] 检查依赖..."
if ! check_dependencies; then
return 1
fi
log_success "依赖检查通过"
# 动态设置网盘上传路径
set_nas_upload_dir
# 生成打包文件名
local timestamp
......@@ -1241,6 +1482,33 @@ package_and_upload() {
return 0
}
# 动态设置网盘上传路径
set_nas_upload_dir() {
case $SELECTED_SYSTEM in
"meeting")
NAS_UPLOAD_DIR="调试打包路径/会议预定系统"
;;
"devops")
NAS_UPLOAD_DIR="调试打包路径/运维集控系统"
;;
"voice_transcription")
NAS_UPLOAD_DIR="调试打包路径/语音转录系统"
;;
"nameplate")
NAS_UPLOAD_DIR="调试打包路径/电子桌牌系统"
;;
"paperless")
NAS_UPLOAD_DIR="调试打包路径/无纸化信令服务"
;;
*)
log_error "未知的系统类型: $SELECTED_SYSTEM"
exit 1
;;
esac
log_info "网盘上传路径已设置为: $NAS_UPLOAD_DIR"
}
#======================================================================
# 根据选择执行打包操作
#======================================================================
......@@ -1275,6 +1543,8 @@ execute_package() {
echo ""
read -p "打包完成,是否上传到公司网盘? (y/n): " do_upload
if [ "$do_upload" = "y" ] || [ "$do_upload" = "Y" ]; then
# Ensure the NAS upload directory is set before packaging and uploading
set_nas_upload_dir
package_and_upload
else
log_info "用户取消上传"
......@@ -1299,18 +1569,18 @@ execute_package() {
case $package_type in
1)
package_devops_system
package_devops_system_services
;;
2)
package_devops_docker_images
# package_devops_docker_images # Removed invalid reference
;;
3)
package_devops_system
package_devops_docker_images
package_devops_system_services
# package_devops_docker_images # Removed invalid reference
;;
4)
package_devops_system
package_devops_docker_images
package_devops_system_services
# package_devops_docker_images # Removed invalid reference
# 询问是否上传
echo ""
read -p "打包完成,是否上传到公司网盘? (y/n): " do_upload
......@@ -1339,18 +1609,18 @@ execute_package() {
case $package_type in
1)
package_voice_transcription_system
package_voice_transcription_system_services
;;
2)
package_voice_transcription_docker_images
package_voice_transcription_containers
;;
3)
package_voice_transcription_system
package_voice_transcription_docker_images
package_voice_transcription_system_services
package_voice_transcription_containers
;;
4)
package_voice_transcription_system
package_voice_transcription_docker_images
package_voice_transcription_system_services
package_voice_transcription_containers
# 询问是否上传
echo ""
read -p "打包完成,是否上传到公司网盘? (y/n): " do_upload
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论