fix: deploy.sh 预检改从 .env 文件读原始值(bash source 会把 KEY=[...] 按数组解析剥引号,导致合法 JSON 误报)
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run

This commit is contained in:
34047007@qq.com
2026-08-10 17:05:05 +08:00
parent 7548a0a161
commit 13ce116478
+7 -5
View File
@@ -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
} }