Render deploy config from template

This commit is contained in:
tian 2026-04-19 10:44:24 +08:00
parent de77e2ae85
commit ace8dcde72

View File

@ -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:-<none>}"
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=()