fix: deploy.sh 预检改从 .env 文件读原始值(bash source 会把 KEY=[...] 按数组解析剥引号,导致合法 JSON 误报)
This commit is contained in:
+7
-5
@@ -125,12 +125,14 @@ set -a; source "$REPO_ROOT/.env"; set +a
|
|||||||
# 写成了逗号列表会在迁移时炸(8-10 事故),这里提前捕获,给出正确写法提示。
|
# 写成了逗号列表会在迁移时炸(8-10 事故),这里提前捕获,给出正确写法提示。
|
||||||
# 仅检查 config.py 中的复杂类型字段(现仅 CORS_ORIGINS);str 类型(如 REDIS_URL)
|
# 仅检查 config.py 中的复杂类型字段(现仅 CORS_ORIGINS);str 类型(如 REDIS_URL)
|
||||||
# 不按 JSON 解析,预检会误报,不要加进来。
|
# 不按 JSON 解析,预检会误报,不要加进来。
|
||||||
|
# 注意:必须从 .env 文件直接 grep 原始值——bash `source .env` 会把 `KEY=["a","b"]`
|
||||||
|
# 按数组语法解析并剥掉引号,${KEY} 拿到的是非法 JSON,造成假阴性。
|
||||||
json_env_check() {
|
json_env_check() {
|
||||||
local var="$1"
|
local var="$1" raw
|
||||||
local v="${!var:-}"
|
raw="$(grep -E "^[[:space:]]*(export[[:space:]]+)?${var}[[:space:]]*=" "$REPO_ROOT/.env" | tail -1 | sed -E "s/^[^=]*=//" || true)"
|
||||||
[ -z "$v" ] && return 0
|
[ -z "$raw" ] && return 0
|
||||||
if ! python3 -c "import json,sys; json.loads(sys.argv[1])" "$v" 2>/dev/null; then
|
if ! python3 -c "import json,sys; json.loads(sys.argv[1])" "$raw" 2>/dev/null; then
|
||||||
error "$var 必须是合法 JSON(如 [\"https://a.com\"]),当前值: $v
|
error "$var 必须是合法 JSON(如 [\"https://a.com\"]),.env 当前值: $raw
|
||||||
请修改 $REPO_ROOT/.env 后重试。"
|
请修改 $REPO_ROOT/.env 后重试。"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user