release: sync public installer asset install.sh
This commit is contained in:
+79
-18
@@ -343,6 +343,44 @@ run_visible_logged() {
|
||||
"$@" 2>&1 | tee -a "$INSTALL_LOG"
|
||||
return "${PIPESTATUS[0]}"
|
||||
}
|
||||
if [[ ${XYMEDIA_INSTALL_TEST_POST_MIGRATION_ONLY:-0} == 1 ]]; then
|
||||
INSTALL_DIR=${XYMEDIA_INSTALL_DIR:-$PWD}
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
INSTALL_LOG="$INSTALL_DIR/install.log"
|
||||
: >"$INSTALL_LOG"
|
||||
COMPOSE=(docker)
|
||||
COMPOSE_FUSE=()
|
||||
MENU_PROFILES=${XYMEDIA_INSTALL_TEST_MENU_PROFILES:-}
|
||||
set +e
|
||||
migration_rc=0
|
||||
printf '数据库迁移退出码:%s\n' "$migration_rc"
|
||||
printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG"
|
||||
printf '数据库初始化完成\n'
|
||||
printf '数据库初始化完成\n' >>"$INSTALL_LOG"
|
||||
printf '正在启动 XyMediaVault 应用...\n'
|
||||
progress '启动 XyMediaVault 服务' || true
|
||||
if "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app; then
|
||||
app_start_rc=0
|
||||
else
|
||||
app_start_rc=$?
|
||||
fi
|
||||
printf '应用启动命令退出码:%s\n' "$app_start_rc"
|
||||
printf '应用启动命令退出码:%s\n' "$app_start_rc" >>"$INSTALL_LOG"
|
||||
if (( app_start_rc != 0 )); then
|
||||
persist_installer_log || true
|
||||
printf 'XyMediaVault 启动失败(退出码:%s)\n' "$app_start_rc" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ $MENU_PROFILES == *xiaoya-control* ]]; then
|
||||
if print_controller_info; then
|
||||
:
|
||||
else
|
||||
printf '控制器连接信息暂时不可读取,请安装完成后通过菜单 6 查看。\n'
|
||||
fi
|
||||
fi
|
||||
set -e
|
||||
exit 0
|
||||
fi
|
||||
usage() { sed -n '1,20p' "$0"; }
|
||||
read_tty() { if ((TTY_TEST_MODE)); then [[ $TTY_TEST_INDEX -lt ${#TTY_TEST_LINES[@]} ]] || return 1; printf -v "$1" '%s' "${TTY_TEST_LINES[$TTY_TEST_INDEX]}"; TTY_TEST_INDEX=$((TTY_TEST_INDEX + 1)); else IFS= read -r "$1" <"$TTY_IN"; fi; }
|
||||
prompt_tty() { [[ -r $TTY_IN && -w $TTY_OUT ]] || die '交互菜单需要终端,请在终端中运行安装器'; printf '%s' "$1" >>$TTY_OUT; read_tty value || die '无法读取终端输入'; printf '%s' "$value"; }
|
||||
@@ -1181,27 +1219,34 @@ run_migration() {
|
||||
set +e
|
||||
run_migration
|
||||
migration_rc=$?
|
||||
set -e
|
||||
printf '数据库迁移退出码:%s\n' "$migration_rc"
|
||||
printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG"
|
||||
if [[ $migration_rc -ne 0 ]]; then
|
||||
persist_installer_log
|
||||
exit_code=1
|
||||
persist_installer_log || true
|
||||
if (( EXISTING_DB )); then
|
||||
die "已有数据库迁移失败(退出码:$migration_rc)"
|
||||
printf '已有数据库迁移失败(退出码:%s)\n' "$migration_rc" >&2
|
||||
else
|
||||
printf '数据库初始化失败(退出码:%s)\n' "$migration_rc" >&2
|
||||
fi
|
||||
die "数据库初始化失败(退出码:$migration_rc)"
|
||||
exit "$exit_code"
|
||||
fi
|
||||
printf '数据库初始化完成\n'
|
||||
printf '数据库初始化完成\n' >>"$INSTALL_LOG"
|
||||
set +e
|
||||
if [[ $MENU_PROFILES == *xiaoya-control* ]]; then
|
||||
printf '本机小雅控制器连接信息:\n'
|
||||
print_controller_info || printf '控制器连接信息暂时不可读取,安装完成后可通过菜单 6 查看。\n'
|
||||
printf '正在启动 XyMediaVault 应用...\n'
|
||||
progress '启动 XyMediaVault 服务' || true
|
||||
if "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app; then
|
||||
app_start_rc=0
|
||||
else
|
||||
app_start_rc=$?
|
||||
fi
|
||||
progress '启动 XyMediaVault 服务'
|
||||
run_logged "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app
|
||||
app_start_rc=$?
|
||||
if [[ $app_start_rc -ne 0 ]]; then
|
||||
persist_installer_log
|
||||
die "XyMediaVault 启动失败(退出码:$app_start_rc)"
|
||||
printf '应用启动命令退出码:%s\n' "$app_start_rc"
|
||||
printf '应用启动命令退出码:%s\n' "$app_start_rc" >>"$INSTALL_LOG"
|
||||
if (( app_start_rc != 0 )); then
|
||||
exit_code=1
|
||||
persist_installer_log || true
|
||||
printf 'XyMediaVault 启动失败(退出码:%s)\n' "$app_start_rc" >&2
|
||||
exit "$exit_code"
|
||||
fi
|
||||
set -e
|
||||
wait_for_app_health() {
|
||||
@@ -1231,21 +1276,37 @@ wait_for_app_health() {
|
||||
sleep 2
|
||||
done
|
||||
}
|
||||
wait_for_app_health || die 'XyMediaVault 健康检查被中断,安装未完成'
|
||||
if wait_for_app_health; then
|
||||
:
|
||||
else
|
||||
printf 'XyMediaVault 健康检查被中断,安装未完成。\n' >&2
|
||||
persist_installer_log || true
|
||||
exit 1
|
||||
fi
|
||||
bootstrap_local_controller() {
|
||||
[[ $MENU_PROFILES == *xiaoya-control* ]] || return 0
|
||||
(( REMOTE_MODE == 0 )) || return 0
|
||||
printf '正在将本机小雅 Controller 同步到管理平台数据库...\n'
|
||||
if ! run_visible_logged docker exec xymedia-app /releases/current/bin/xymediavault bootstrap-controller --config /app/config.yaml; then
|
||||
die '本机小雅 Controller 数据库同步失败,安装未完成'
|
||||
printf '本机小雅 Controller 数据库同步失败,安装未完成。\n' >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
bootstrap_local_controller
|
||||
if bootstrap_local_controller; then
|
||||
:
|
||||
else
|
||||
persist_installer_log || true
|
||||
exit 1
|
||||
fi
|
||||
cp "$INSTALL_LOG" "$INSTALL_DIR/install.log" 2>/dev/null || true
|
||||
printf '\033[2K\r[%d/%d] 安装完成:XyMediaVault 已就绪\n' "$TOTAL_STEPS" "$TOTAL_STEPS"
|
||||
printf '管理地址:http://127.0.0.1:%s\n' "$API_PORT"
|
||||
if [[ $MENU_PROFILES == *xiaoya-control* ]]; then
|
||||
print_controller_info || printf '控制器连接信息暂时不可读取,请安装完成后通过菜单 6 查看。\n'
|
||||
if print_controller_info; then
|
||||
:
|
||||
else
|
||||
printf '控制器连接信息暂时不可读取,请安装完成后通过菜单 6 查看。\n'
|
||||
fi
|
||||
fi
|
||||
if (( LOCAL_DB )); then
|
||||
print_database_info
|
||||
|
||||
Reference in New Issue
Block a user