fix: WSL兼容+verify加载secrets+deploy非交互模式
这个提交包含在:
父节点
1c8988f973
当前提交
f1de6167d3
@ -108,7 +108,26 @@ printf '\033[1;33m━━━━━━━━━━━━━━━━━━━━
|
||||
printf ' 1) 新建租户 — 填写租户信息,系统将为您创建全新账号\n'
|
||||
printf ' 2) 迁移租户 — 从公有平台导入现有租户数据(需迁移密钥)\n\n'
|
||||
|
||||
# 非交互模式(CI/自动化部署):通过环境变量提供所有参数
|
||||
# XUQM_NONINTERACTIVE=1 启用非交互模式
|
||||
# XUQM_DEPLOY_MODE new | migrate
|
||||
# XUQM_TENANT_EMAIL 租户邮箱
|
||||
# XUQM_TENANT_USERNAME 用户名
|
||||
# XUQM_TENANT_NICKNAME 昵称(可选,默认同用户名)
|
||||
# XUQM_TENANT_PASSWORD 登录密码
|
||||
# XUQM_EXTERNAL_URL 外部访问地址(如 https://win.xuqinmin.com)
|
||||
# XUQM_NGINX_MODE 1=直接80 / 2=本地11223(默认1)
|
||||
# XUQM_MIGRATE_KEY 迁移密钥(migrate 模式需要)
|
||||
_NONINTERACTIVE="${XUQM_NONINTERACTIVE:-0}"
|
||||
|
||||
DEPLOY_MODE=""
|
||||
if [ "$_NONINTERACTIVE" = "1" ] && [ -n "${XUQM_DEPLOY_MODE:-}" ]; then
|
||||
case "${XUQM_DEPLOY_MODE}" in
|
||||
new|migrate) DEPLOY_MODE="${XUQM_DEPLOY_MODE}" ;;
|
||||
*) fail "XUQM_DEPLOY_MODE 必须为 new 或 migrate" ;;
|
||||
esac
|
||||
printf ' [非交互] 部署模式: %s\n' "$DEPLOY_MODE"
|
||||
else
|
||||
while [ -z "$DEPLOY_MODE" ]; do
|
||||
read -rp " 请选择 [1/2]: " _choice
|
||||
case "$_choice" in
|
||||
@ -117,6 +136,7 @@ while [ -z "$DEPLOY_MODE" ]; do
|
||||
*) printf ' 请输入 1 或 2\n' ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
DEPLOY_TENANT_EMAIL=""
|
||||
DEPLOY_TENANT_USERNAME=""
|
||||
@ -124,6 +144,16 @@ DEPLOY_TENANT_NICKNAME=""
|
||||
_BOOTSTRAP_PASSWORD=""
|
||||
|
||||
if [ "$DEPLOY_MODE" = "new" ]; then
|
||||
if [ "$_NONINTERACTIVE" = "1" ] && [ -n "${XUQM_TENANT_EMAIL:-}" ]; then
|
||||
DEPLOY_TENANT_EMAIL="${XUQM_TENANT_EMAIL}"
|
||||
DEPLOY_TENANT_USERNAME="${XUQM_TENANT_USERNAME:-admin}"
|
||||
DEPLOY_TENANT_NICKNAME="${XUQM_TENANT_NICKNAME:-$DEPLOY_TENANT_USERNAME}"
|
||||
_BOOTSTRAP_PASSWORD="${XUQM_TENANT_PASSWORD:-}"
|
||||
[ -n "$_BOOTSTRAP_PASSWORD" ] || fail "非交互模式必须设置 XUQM_TENANT_PASSWORD"
|
||||
[ "${#_BOOTSTRAP_PASSWORD}" -ge 8 ] || fail "XUQM_TENANT_PASSWORD 不能少于 8 位"
|
||||
printf ' [非交互] 租户: %s / %s\n' "$DEPLOY_TENANT_EMAIL" "$DEPLOY_TENANT_USERNAME"
|
||||
ok "租户信息已收集(非交互模式)"
|
||||
else
|
||||
printf '\n ── 新建租户信息 ──\n'
|
||||
|
||||
while [ -z "$DEPLOY_TENANT_EMAIL" ]; do
|
||||
@ -154,6 +184,7 @@ if [ "$DEPLOY_MODE" = "new" ]; then
|
||||
_BOOTSTRAP_PASSWORD="$_pw"
|
||||
unset _pw
|
||||
ok "租户信息已收集"
|
||||
fi
|
||||
|
||||
else
|
||||
# ── 迁移模式:先收集 SRC 配置 + 认证,再继续后续步骤 ──
|
||||
@ -189,6 +220,10 @@ printf ' 填写您的 nginx 对外暴露的地址,SDK 客户端将使用此
|
||||
printf ' 例:http://192.168.1.100 或 https://xuqm.example.com\n\n'
|
||||
|
||||
_EXT_BASE=""
|
||||
if [ "$_NONINTERACTIVE" = "1" ] && [ -n "${XUQM_EXTERNAL_URL:-}" ]; then
|
||||
_EXT_BASE="${XUQM_EXTERNAL_URL}"
|
||||
printf ' [非交互] 外部地址: %s\n' "$_EXT_BASE"
|
||||
else
|
||||
while [ -z "$_EXT_BASE" ]; do
|
||||
read -rp " 外部访问地址: " _EXT_BASE
|
||||
if ! printf '%s' "$_EXT_BASE" | grep -qE '^https?://'; then
|
||||
@ -196,6 +231,7 @@ while [ -z "$_EXT_BASE" ]; do
|
||||
_EXT_BASE=""
|
||||
fi
|
||||
done
|
||||
fi
|
||||
CONSOLE_BASE="${_EXT_BASE%/}"
|
||||
if printf '%s' "$CONSOLE_BASE" | grep -q '^https://'; then
|
||||
_WS_SCHEME="wss"
|
||||
@ -216,6 +252,13 @@ printf ' (适合:云服务器域名 HTTPS 场景,宿主机 nginx 处
|
||||
|
||||
_NGINX_MODE=""
|
||||
NGINX_BIND="80"
|
||||
if [ "$_NONINTERACTIVE" = "1" ]; then
|
||||
case "${XUQM_NGINX_MODE:-1}" in
|
||||
2) _NGINX_MODE="proxy"; NGINX_BIND="127.0.0.1:11223" ;;
|
||||
*) _NGINX_MODE="direct"; NGINX_BIND="80" ;;
|
||||
esac
|
||||
printf ' [非交互] nginx 模式: %s (%s)\n' "$_NGINX_MODE" "$NGINX_BIND"
|
||||
else
|
||||
while [ -z "$_NGINX_MODE" ]; do
|
||||
read -rp " 请选择 [1/2]: " _choice
|
||||
case "$_choice" in
|
||||
@ -224,6 +267,7 @@ while [ -z "$_NGINX_MODE" ]; do
|
||||
*) printf ' 请输入 1 或 2\n' ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
ok "nginx 入口: ${NGINX_BIND}:80"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户