fix:用 python3 校验 JSON(一般系统自带),不再强制 jq
Some checks failed
Sync Consul Config / sync (push) Failing after 2s
Some checks failed
Sync Consul Config / sync (push) Failing after 2s
This commit is contained in:
parent
9d38e2ae26
commit
b713b739f9
@ -14,8 +14,27 @@ mkdir -p "$IDWMS_DIR"
|
|||||||
need() { command -v "$1" >/dev/null || { echo "FAIL: 需要 $1"; exit 1; }; }
|
need() { command -v "$1" >/dev/null || { echo "FAIL: 需要 $1"; exit 1; }; }
|
||||||
need kubectl
|
need kubectl
|
||||||
need curl
|
need curl
|
||||||
need jq
|
command -v python3 >/dev/null || command -v jq >/dev/null || {
|
||||||
|
echo "FAIL: 需要 python3 或 jq"; exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
json_pretty() {
|
||||||
|
local raw="$1" out="$2"
|
||||||
|
if command -v python3 >/dev/null; then
|
||||||
|
python3 -c 'import json,sys; json.dump(json.load(sys.stdin), open(sys.argv[1],"w",encoding="utf-8"), ensure_ascii=False, indent=2); open(sys.argv[1],"a",encoding="utf-8").write("\n")' "$out" <<<"$raw"
|
||||||
|
else
|
||||||
|
jq . <<<"$raw" >"$out"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
json_ok_str() {
|
||||||
|
local raw="$1"
|
||||||
|
if command -v python3 >/dev/null; then
|
||||||
|
python3 -c 'import json,sys; json.loads(sys.stdin.read())' <<<"$raw"
|
||||||
|
else
|
||||||
|
jq empty <<<"$raw"
|
||||||
|
fi
|
||||||
|
}
|
||||||
if [[ -z "${CONSUL_HTTP_ADDR:-}" ]]; then
|
if [[ -z "${CONSUL_HTTP_ADDR:-}" ]]; then
|
||||||
CIP="$(kubectl -n "$NS" get svc consul -o jsonpath='{.spec.clusterIP}')"
|
CIP="$(kubectl -n "$NS" get svc consul -o jsonpath='{.spec.clusterIP}')"
|
||||||
CONSUL_HTTP_ADDR="http://${CIP}:8500"
|
CONSUL_HTTP_ADDR="http://${CIP}:8500"
|
||||||
@ -48,11 +67,11 @@ for name in "${TARGETS[@]}"; do
|
|||||||
echo "WARN: ${key} 为空或不存在,跳过"
|
echo "WARN: ${key} 为空或不存在,跳过"
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
if ! jq empty <<<"$raw" 2>/dev/null; then
|
if ! json_ok_str "$raw" 2>/dev/null; then
|
||||||
echo "FAIL: ${key} 不是 JSON"
|
echo "FAIL: ${key} 不是 JSON"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
jq . <<<"$raw" >"$out"
|
json_pretty "$raw" "$out"
|
||||||
echo "OK → ${out}"
|
echo "OK → ${out}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@ -22,8 +22,19 @@ IDWMS_DIR="${ROOT}/idwms"
|
|||||||
need() { command -v "$1" >/dev/null || { echo "FAIL: 需要 $1"; exit 1; }; }
|
need() { command -v "$1" >/dev/null || { echo "FAIL: 需要 $1"; exit 1; }; }
|
||||||
need kubectl
|
need kubectl
|
||||||
need curl
|
need curl
|
||||||
need jq
|
command -v envsubst >/dev/null || { echo "FAIL: 需要 envsubst(apt install gettext-base)"; exit 1; }
|
||||||
command -v envsubst >/dev/null || { echo "FAIL: 需要 envsubst(gettext)"; exit 1; }
|
|
||||||
|
# JSON 校验:优先 python3(runner 主机通常有),其次 jq
|
||||||
|
json_ok() {
|
||||||
|
local f="$1"
|
||||||
|
if command -v python3 >/dev/null; then
|
||||||
|
python3 -c 'import json,sys; json.load(open(sys.argv[1],encoding="utf-8"))' "$f"
|
||||||
|
elif command -v jq >/dev/null; then
|
||||||
|
jq empty "$f"
|
||||||
|
else
|
||||||
|
echo "FAIL: 需要 python3 或 jq 校验 JSON"; return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
secret_b64() {
|
secret_b64() {
|
||||||
local name="$1" key="$2"
|
local name="$1" key="$2"
|
||||||
@ -116,7 +127,7 @@ for name in "${TARGETS[@]}"; do
|
|||||||
envsubst '${MYSQL_ROOT_PASSWORD} ${REDIS_PASSWORD} ${RABBITMQ_DEFAULT_PASS} ${ELASTIC_PASSWORD} ${JWT_SECRET_KEY}' \
|
envsubst '${MYSQL_ROOT_PASSWORD} ${REDIS_PASSWORD} ${RABBITMQ_DEFAULT_PASS} ${ELASTIC_PASSWORD} ${JWT_SECRET_KEY}' \
|
||||||
<"$src" >"${TMP}/${name}.json"
|
<"$src" >"${TMP}/${name}.json"
|
||||||
|
|
||||||
if ! jq empty "${TMP}/${name}.json" 2>/dev/null; then
|
if ! json_ok "${TMP}/${name}.json" 2>/dev/null; then
|
||||||
echo "FAIL: ${name}.json 渲染后不是合法 JSON"
|
echo "FAIL: ${name}.json 渲染后不是合法 JSON"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user