fix(cd): wait for boundary readback rollout
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m16s
CD Pipeline / build-and-deploy (push) Successful in 7m41s
CD Pipeline / post-deploy-checks (push) Successful in 2m13s
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m16s
CD Pipeline / build-and-deploy (push) Successful in 7m41s
CD Pipeline / post-deploy-checks (push) Successful in 2m13s
This commit is contained in:
@@ -3319,15 +3319,23 @@ jobs:
|
|||||||
SOURCE_REVISION="$SOURCE_REVISION" python3 - <<'PY'
|
SOURCE_REVISION="$SOURCE_REVISION" python3 - <<'PY'
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import time
|
import time
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
|
||||||
expected = os.environ["SOURCE_REVISION"].strip().lower()
|
expected = os.environ["SOURCE_REVISION"].strip().lower()
|
||||||
url = "https://awoooi.wooo.work/api/v1/agents/agent-autonomous-runtime-control"
|
base_url = "https://awoooi.wooo.work/api/v1/agents/agent-autonomous-runtime-control"
|
||||||
|
attempts = int(
|
||||||
|
os.environ.get("EXECUTOR_BOUNDARY_READBACK_ATTEMPTS", "60")
|
||||||
|
)
|
||||||
last_status = "unavailable"
|
last_status = "unavailable"
|
||||||
for _attempt in range(1, 8):
|
for attempt in range(1, attempts + 1):
|
||||||
|
url = (
|
||||||
|
f"{base_url}?expected_source_sha={expected}"
|
||||||
|
f"&readback_attempt={attempt}"
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
with urllib.request.urlopen(url, timeout=20) as response:
|
with urllib.request.urlopen(url, timeout=10) as response:
|
||||||
payload = json.load(response)
|
payload = json.load(response)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
last_status = f"fetch_failed:{type(exc).__name__}"
|
last_status = f"fetch_failed:{type(exc).__name__}"
|
||||||
@@ -3352,7 +3360,13 @@ jobs:
|
|||||||
boundary.get("canonical_learning_source_boundary")
|
boundary.get("canonical_learning_source_boundary")
|
||||||
or {}
|
or {}
|
||||||
)
|
)
|
||||||
last_status = str(boundary.get("status") or "missing")
|
last_status = (
|
||||||
|
f"status={boundary.get('status') or 'missing'};"
|
||||||
|
"verified_source_sha="
|
||||||
|
f"{str(boundary.get('verified_source_sha') or '')[:10]};"
|
||||||
|
"deployed_source_sha="
|
||||||
|
f"{str(boundary.get('deployed_source_sha') or '')[:10]}"
|
||||||
|
)
|
||||||
if (
|
if (
|
||||||
boundary.get("production_boundary_verified") is True
|
boundary.get("production_boundary_verified") is True
|
||||||
and boundary.get("full_workload_boundary_verified") is True
|
and boundary.get("full_workload_boundary_verified") is True
|
||||||
@@ -3372,6 +3386,13 @@ jobs:
|
|||||||
):
|
):
|
||||||
print("executor_boundary_public_readback=verified_ready")
|
print("executor_boundary_public_readback=verified_ready")
|
||||||
break
|
break
|
||||||
|
if attempt == 1 or attempt % 6 == 0:
|
||||||
|
print(
|
||||||
|
"executor_boundary_public_readback_waiting="
|
||||||
|
f"{attempt}/{attempts};{last_status}",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
if attempt < attempts:
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
else:
|
else:
|
||||||
raise SystemExit(
|
raise SystemExit(
|
||||||
|
|||||||
@@ -198,6 +198,10 @@ def test_cd_prunes_and_verifies_api_executor_boundary_in_production() -> None:
|
|||||||
in workflow
|
in workflow
|
||||||
)
|
)
|
||||||
assert "executor_boundary_public_readback=verified_ready" in workflow
|
assert "executor_boundary_public_readback=verified_ready" in workflow
|
||||||
|
assert "EXECUTOR_BOUNDARY_READBACK_ATTEMPTS" in workflow
|
||||||
|
assert "range(1, attempts + 1)" in workflow
|
||||||
|
assert "readback_attempt={attempt}" in workflow
|
||||||
|
assert "executor_boundary_public_readback_waiting=" in workflow
|
||||||
assert 'boundary.get("full_workload_boundary_verified") is True' in workflow
|
assert 'boundary.get("full_workload_boundary_verified") is True' in workflow
|
||||||
assert 'database_boundary.get("db_identity_isolated") is True' in workflow
|
assert 'database_boundary.get("db_identity_isolated") is True' in workflow
|
||||||
assert "autonomous_single_writer_source_boundary" in workflow
|
assert "autonomous_single_writer_source_boundary" in workflow
|
||||||
|
|||||||
Reference in New Issue
Block a user