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"
|
"$@" 2>&1 | tee -a "$INSTALL_LOG"
|
||||||
return "${PIPESTATUS[0]}"
|
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"; }
|
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; }
|
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"; }
|
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
|
set +e
|
||||||
run_migration
|
run_migration
|
||||||
migration_rc=$?
|
migration_rc=$?
|
||||||
set -e
|
printf '数据库迁移退出码:%s\n' "$migration_rc"
|
||||||
|
printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG"
|
||||||
if [[ $migration_rc -ne 0 ]]; then
|
if [[ $migration_rc -ne 0 ]]; then
|
||||||
persist_installer_log
|
exit_code=1
|
||||||
|
persist_installer_log || true
|
||||||
if (( EXISTING_DB )); then
|
if (( EXISTING_DB )); then
|
||||||
die "已有数据库迁移失败(退出码:$migration_rc)"
|
printf '已有数据库迁移失败(退出码:%s)\n' "$migration_rc" >&2
|
||||||
|
else
|
||||||
|
printf '数据库初始化失败(退出码:%s)\n' "$migration_rc" >&2
|
||||||
fi
|
fi
|
||||||
die "数据库初始化失败(退出码:$migration_rc)"
|
exit "$exit_code"
|
||||||
fi
|
fi
|
||||||
printf '数据库初始化完成\n'
|
printf '数据库初始化完成\n'
|
||||||
printf '数据库初始化完成\n' >>"$INSTALL_LOG"
|
printf '数据库初始化完成\n' >>"$INSTALL_LOG"
|
||||||
set +e
|
printf '正在启动 XyMediaVault 应用...\n'
|
||||||
if [[ $MENU_PROFILES == *xiaoya-control* ]]; then
|
progress '启动 XyMediaVault 服务' || true
|
||||||
printf '本机小雅控制器连接信息:\n'
|
if "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app; then
|
||||||
print_controller_info || printf '控制器连接信息暂时不可读取,安装完成后可通过菜单 6 查看。\n'
|
app_start_rc=0
|
||||||
|
else
|
||||||
|
app_start_rc=$?
|
||||||
fi
|
fi
|
||||||
progress '启动 XyMediaVault 服务'
|
printf '应用启动命令退出码:%s\n' "$app_start_rc"
|
||||||
run_logged "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app
|
printf '应用启动命令退出码:%s\n' "$app_start_rc" >>"$INSTALL_LOG"
|
||||||
app_start_rc=$?
|
if (( app_start_rc != 0 )); then
|
||||||
if [[ $app_start_rc -ne 0 ]]; then
|
exit_code=1
|
||||||
persist_installer_log
|
persist_installer_log || true
|
||||||
die "XyMediaVault 启动失败(退出码:$app_start_rc)"
|
printf 'XyMediaVault 启动失败(退出码:%s)\n' "$app_start_rc" >&2
|
||||||
|
exit "$exit_code"
|
||||||
fi
|
fi
|
||||||
set -e
|
set -e
|
||||||
wait_for_app_health() {
|
wait_for_app_health() {
|
||||||
@@ -1231,21 +1276,37 @@ wait_for_app_health() {
|
|||||||
sleep 2
|
sleep 2
|
||||||
done
|
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() {
|
bootstrap_local_controller() {
|
||||||
[[ $MENU_PROFILES == *xiaoya-control* ]] || return 0
|
[[ $MENU_PROFILES == *xiaoya-control* ]] || return 0
|
||||||
(( REMOTE_MODE == 0 )) || return 0
|
(( REMOTE_MODE == 0 )) || return 0
|
||||||
printf '正在将本机小雅 Controller 同步到管理平台数据库...\n'
|
printf '正在将本机小雅 Controller 同步到管理平台数据库...\n'
|
||||||
if ! run_visible_logged docker exec xymedia-app /releases/current/bin/xymediavault bootstrap-controller --config /app/config.yaml; then
|
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
|
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
|
cp "$INSTALL_LOG" "$INSTALL_DIR/install.log" 2>/dev/null || true
|
||||||
printf '\033[2K\r[%d/%d] 安装完成:XyMediaVault 已就绪\n' "$TOTAL_STEPS" "$TOTAL_STEPS"
|
printf '\033[2K\r[%d/%d] 安装完成:XyMediaVault 已就绪\n' "$TOTAL_STEPS" "$TOTAL_STEPS"
|
||||||
printf '管理地址:http://127.0.0.1:%s\n' "$API_PORT"
|
printf '管理地址:http://127.0.0.1:%s\n' "$API_PORT"
|
||||||
if [[ $MENU_PROFILES == *xiaoya-control* ]]; then
|
if [[ $MENU_PROFILES == *xiaoya-control* ]]; then
|
||||||
print_controller_info || printf '控制器连接信息暂时不可读取,请安装完成后通过菜单 6 查看。\n'
|
if print_controller_info; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
printf '控制器连接信息暂时不可读取,请安装完成后通过菜单 6 查看。\n'
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if (( LOCAL_DB )); then
|
if (( LOCAL_DB )); then
|
||||||
print_database_info
|
print_database_info
|
||||||
|
|||||||
Reference in New Issue
Block a user