diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 03a7c38..72b03f2 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -32,6 +32,18 @@ LOGS_DIR="$RUNTIME_DIR/logs" ALARMS_DIR="$RUNTIME_DIR/alarms" CLIPS_DIR="$RUNTIME_DIR/clips" +# 默认使用模板/profile/overlay 渲染部署配置。可通过环境变量覆盖: +# DEPLOY_CONFIG_TEMPLATE=configs/templates/workshop_face_shoe_alarm.json +# DEPLOY_CONFIG_PROFILE=configs/profiles/local_3588_test.json +# DEPLOY_CONFIG_OVERLAYS="configs/overlays/face_debug.json configs/overlays/production_quiet.json" +# DEPLOY_CONFIG_ID=local_3588_face_debug +# DEPLOY_CONFIG_VERSION=20260419.001 +DEPLOY_CONFIG_TEMPLATE="${DEPLOY_CONFIG_TEMPLATE:-configs/templates/workshop_face_shoe_alarm.json}" +DEPLOY_CONFIG_PROFILE="${DEPLOY_CONFIG_PROFILE:-configs/profiles/local_3588_test.json}" +DEPLOY_CONFIG_OVERLAYS="${DEPLOY_CONFIG_OVERLAYS:-configs/overlays/face_debug.json}" +DEPLOY_CONFIG_ID="${DEPLOY_CONFIG_ID:-local_3588_face_debug}" +DEPLOY_CONFIG_VERSION="${DEPLOY_CONFIG_VERSION:-$(date +%Y%m%d.%H%M%S)}" + # 创建必要的运行时目录 create_runtime_dirs() { echo -e "${CYAN}[创建运行时目录]${NC}" @@ -262,9 +274,62 @@ cmd_install_media_server() { echo -e "${GREEN}✓${NC} Media Server 安装完成" } +# 渲染模板化部署配置 +render_template_config() { + local template_path="$PROJECT_DIR/$DEPLOY_CONFIG_TEMPLATE" + local profile_path="$PROJECT_DIR/$DEPLOY_CONFIG_PROFILE" + local render_tool="$PROJECT_DIR/tools/render_config.py" + local rendered_at + local out_file + local overlay_args=() + local overlay_path + + if [ ! -f "$render_tool" ] || [ ! -f "$template_path" ] || [ ! -f "$profile_path" ]; then + return 1 + fi + + rendered_at="$(date -Iseconds)" + out_file="/tmp/rk3588-media-server-${DEPLOY_CONFIG_ID}-${DEPLOY_CONFIG_VERSION}.json" + + for overlay in $DEPLOY_CONFIG_OVERLAYS; do + overlay_path="$PROJECT_DIR/$overlay" + if [ ! -f "$overlay_path" ]; then + echo -e "${YELLOW}警告: overlay 不存在,跳过: $overlay${NC}" + continue + fi + overlay_args+=(--overlay "$overlay_path") + done + + echo -e "${CYAN}[渲染模板配置]${NC}" + echo " template: $DEPLOY_CONFIG_TEMPLATE" + echo " profile: $DEPLOY_CONFIG_PROFILE" + echo " overlays: ${DEPLOY_CONFIG_OVERLAYS:-}" + echo " config_id: $DEPLOY_CONFIG_ID" + echo " config_version: $DEPLOY_CONFIG_VERSION" + + python3 "$render_tool" \ + --template "$template_path" \ + --profile "$profile_path" \ + "${overlay_args[@]}" \ + --config-id "$DEPLOY_CONFIG_ID" \ + --config-version "$DEPLOY_CONFIG_VERSION" \ + --rendered-at "$rendered_at" \ + --out "$out_file" + + cp "$out_file" "$INSTALL_DIR/etc/media-server.json" + echo -e "${GREEN}✓${NC} 已渲染部署配置: $out_file" + return 0 +} + # 选择配置文件 select_config() { echo -e "${CYAN}[选择配置文件]${NC}" + + if render_template_config; then + return + fi + + echo -e "${YELLOW}模板渲染不可用,回退到旧配置文件选择流程${NC}" # 查找所有可用的配置文件 CONFIGS=()