Files
aios/ops/aios-v2/v2r1c2-promote-and-accept.sh
T

70 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
RUN_ID=AIOS-V2R1C2-PRODUCTION-20260722T011836Z
CONTROL=/data/aios-gitops/worktrees/controller/ops/aios-v2/v2r1c2-production-control.sh
REPO=/data/aios-gitops/repo.git
EVIDENCE_DIR=/var/lib/aios-gitops/acceptance/$RUN_ID
DRIVER=/data/aios-gitops/worktrees/controller/tools/run_online_smoke_18920.py
TEMP_SOURCE=
cleanup_temp() {
case "$TEMP_SOURCE" in
/tmp/aios-v2r1c2-production-acceptance.*)
test -d "$TEMP_SOURCE" && rm -rf -- "$TEMP_SOURCE"
;;
'') ;;
*) echo "refusing to remove unexpected temporary path: $TEMP_SOURCE" >&2; return 1 ;;
esac
}
rollback_on_error() {
code=$?
trap - ERR
AIOS_RELEASE_RUN_ID="$RUN_ID" "$CONTROL" rollback || true
cleanup_temp || true
exit "$code"
}
trap rollback_on_error ERR
AIOS_RELEASE_RUN_ID="$RUN_ID" "$CONTROL" promote
systemctl is-active --quiet aios-v2r1c2-production.service
! systemctl is-active --quiet aios-orchestrator-gateway.service
curl -fsS --max-time 10 http://127.0.0.1:18920/api/v2/health >"$EVIDENCE_DIR/health-after-promote.json"
curl -fsS --max-time 10 http://127.0.0.1:18921/api/v2/health >"$EVIDENCE_DIR/candidate-health-during-production.json"
TEMP_SOURCE=$(mktemp -d /tmp/aios-v2r1c2-production-acceptance.XXXXXX)
git --git-dir="$REPO" archive 8cdca463aff9707edee00e20a3b56884130f6978 | tar -x -C "$TEMP_SOURCE"
(
cd "$TEMP_SOURCE"
python3 tools/aios_v2r1c2_acceptance.py \
--source-oid 3dd622b5a515f1fa4ef72b9f8ae9ce48ac703f24 \
--online \
--base-url http://127.0.0.1:18920 \
--evidence-output "$EVIDENCE_DIR/production-acceptance.json"
)
python3 "$DRIVER" "$TEMP_SOURCE" "$EVIDENCE_DIR/production-online-smoke.json"
python3 - "$EVIDENCE_DIR/production-acceptance.json" "$EVIDENCE_DIR/production-online-smoke.json" <<'PY'
import json
import sys
for path in sys.argv[1:]:
with open(path, encoding='utf-8') as handle:
data = json.load(handle)
if data.get('passed') is not True:
raise SystemExit(f'acceptance failed: {path}')
PY
systemctl show aios-v2r1c2-production.service \
-p ActiveState -p SubState -p MainPID -p NRestarts \
>"$EVIDENCE_DIR/production-service-status.txt"
sha256sum "$EVIDENCE_DIR"/production-acceptance.json \
"$EVIDENCE_DIR"/production-online-smoke.json \
"$EVIDENCE_DIR"/health-after-promote.json \
>"$EVIDENCE_DIR/production-evidence.sha256"
cleanup_temp
TEMP_SOURCE=
trap - ERR
echo SWITCH_VALIDATED=PASS