feat: add ops center and node onboarding flow

This commit is contained in:
Your Name
2026-04-18 23:52:51 +08:00
parent 246838ae4c
commit b9c29481b5
142 changed files with 89727 additions and 186 deletions

55
prepare_final_release.sh Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RELEASE_ROOT="${DOMAINCHECK_RELEASE_ROOT:-${ROOT_DIR}/release}"
REPORT_PATH="${RELEASE_ROOT}/final_release_report.json"
mkdir -p "${RELEASE_ROOT}"
bash "${ROOT_DIR}/package_domain_release.sh"
LATEST_JSON_PATH="${RELEASE_ROOT}/latest_release.json"
if [[ ! -f "${LATEST_JSON_PATH}" ]]; then
echo "latest_release.json not found" >&2
exit 1
fi
VERIFY_OUTPUT="$(bash "${ROOT_DIR}/verify_domain_release.sh")"
python3 - "${LATEST_JSON_PATH}" "${REPORT_PATH}" "${VERIFY_OUTPUT}" <<'PY'
import json
import sys
from datetime import datetime
from pathlib import Path
latest_json_path = Path(sys.argv[1])
report_path = Path(sys.argv[2])
verify_payload = json.loads(sys.argv[3])
latest_payload = json.loads(latest_json_path.read_text(encoding="utf-8"))
verify_ok = bool(verify_payload.get("ok", False))
smoke_ok = bool(latest_payload.get("smoke_test_ok", False))
blocked_reasons = []
if not verify_ok:
blocked_reasons.append("verify_failed")
if not smoke_ok:
blocked_reasons.append("smoke_test_failed_or_skipped")
report = {
"generated_at": datetime.now().isoformat(timespec="seconds"),
"ok": verify_ok and smoke_ok,
"latest_release": latest_payload,
"verify": verify_payload,
"release_gate": {
"verify_ok": verify_ok,
"smoke_test_ok": smoke_ok,
"blocked_reasons": blocked_reasons,
"decision": "ready" if not blocked_reasons else "blocked",
},
}
report_path.write_text(json.dumps(report, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps({"report": str(report_path), "ok": report["ok"]}, ensure_ascii=False, indent=2))
PY
printf 'final release prepared\n'
printf 'report: %s\n' "${REPORT_PATH}"