From f1de6167d39528a7baa45949bc0207a3bedd689d Mon Sep 17 00:00:00 2001 From: xuqinmin12 Date: Fri, 12 Jun 2026 18:34:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20WSL=E5=85=BC=E5=AE=B9+verify=E5=8A=A0?= =?UTF-8?q?=E8=BD=BDsecrets+deploy=E9=9D=9E=E4=BA=A4=E4=BA=92=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/deploy.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 362f2b7..4798606 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -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" # ---------------------------------------------------------------------------