56 lines
1.7 KiB
Bash
Executable File
56 lines
1.7 KiB
Bash
Executable File
#!/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}"
|