From ff4af5fa31b9fc1745bd8dc40afd1d6049e3b591 Mon Sep 17 00:00:00 2001 From: HomeDash Bot Date: Sat, 12 Sep 2026 10:38:17 +0800 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20=E5=BF=85=E5=A1=AB=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=8F=92=E5=9C=A8=20HOST=20=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E4=B9=8B=E5=89=8D=EF=BC=8Cset=20-u=20=E4=B8=8B=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E5=B4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 现象:NAVI_HOST=... bash deploy/zd-host.sh v54 直接报 line 21: HOST: unbound variable 并退出(生产未受影响,纯脚本缺陷)。 原因:上一轮加 NAVI_HOST 必填校验时,把校验插到了 STAMP 之后、HOST 赋值之前, 而脚本是 set -u,提前引用未赋值变量即中止。 修复:校验移到 HOST 赋值之后;zd-host.sh 与 zd.sh 都改。 自测:不给 NAVI_HOST → 友好提示 + 退出码 2;给了则继续执行(实测进入构建阶段)。 --- deploy/zd-host.sh | 4 +++- deploy/zd.sh | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/deploy/zd-host.sh b/deploy/zd-host.sh index 52778c8..91fd15a 100644 --- a/deploy/zd-host.sh +++ b/deploy/zd-host.sh @@ -18,8 +18,10 @@ VER="${1:?用法: deploy/zd-host.sh }" TAG="homedash:ui-${VER}" STAMP="$(date +%Y%m%d%H%M%S)" -[ -n "$HOST" ] || { echo "!! 请指定目标机:NAVI_HOST=user@host bash $0 ..." >&2; exit 2; } HOST="${NAVI_HOST:-}" # 必填:NAVI_HOST=user@host(仓库不预置任何真实地址) + +# 必填校验要在赋值之后(set -u 下提前引用会直接 unbound variable) +[ -n "$HOST" ] || { echo "!! 请指定目标机:NAVI_HOST=user@host bash $0 <版本>" >&2; exit 2; } SSH_PASS="${NAVI_SSH_PASS:-}" DATA_DIR="${NAVI_DATA_DIR:-/vol1/docker/navi-data}" CERT_DIR="${NAVI_CERT_DIR:-/vol1/docker/cert}" diff --git a/deploy/zd.sh b/deploy/zd.sh index 35a4097..b6a48f4 100755 --- a/deploy/zd.sh +++ b/deploy/zd.sh @@ -25,8 +25,10 @@ VER="${1:?用法: deploy/zd.sh }" TAG="homedash:ui-${VER}" STAMP="$(date +%Y%m%d%H%M%S)" -[ -n "$HOST" ] || { echo "!! 请指定目标机:NAVI_HOST=user@host bash $0 ..." >&2; exit 2; } HOST="${NAVI_HOST:-}" # 必填:NAVI_HOST=user@host + +# 必填校验要在赋值之后(set -u 下提前引用会直接 unbound variable) +[ -n "$HOST" ] || { echo "!! 请指定目标机:NAVI_HOST=user@host bash $0 <版本>" >&2; exit 2; } SSH_PASS="${NAVI_SSH_PASS:-}" UPSTREAM_HOST="${NAVI_UPSTREAM_HOST:-dashy.example.com}" PORTAL_CONF="${NAVI_PORTAL_CONF:-/vol1/docker/portal/nginx/nginx.conf}"