fix(cd): treat deploy evidence as effective success
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled

This commit is contained in:
Your Name
2026-07-02 23:56:17 +08:00
parent 93a160646c
commit 1b3b0fd572
3 changed files with 89 additions and 8 deletions

View File

@@ -415,22 +415,30 @@ def build_readback(
)
latest_cd_status = latest_cd_run.get("status", "")
latest_cd_success = latest_cd_status == "Success"
latest_cd_run_ui_blocked = latest_cd_status == "Blocked"
latest_cd_deploy_readback_succeeded_despite_ui_blocked = bool(
latest_cd_run_ui_blocked
and build_log_classifier["job_succeeded"]
latest_cd_deploy_evidence_succeeded = bool(
build_log_classifier["job_succeeded"]
and build_log_classifier["deploy_marker_pushed"]
and build_log_classifier["production_deploy_readback_matched"]
and build_log_classifier["build_deploy_success_notification_sent"]
)
latest_cd_run_ui_blocked = latest_cd_status == "Blocked"
latest_cd_deploy_readback_succeeded_despite_ui_blocked = bool(
latest_cd_run_ui_blocked and latest_cd_deploy_evidence_succeeded
)
latest_cd_run_level_lag_after_deploy_success = bool(
latest_cd_status in {"Waiting", "Running", "Blocked"}
and latest_cd_deploy_evidence_succeeded
)
latest_cd_visible_blocked = bool(
latest_cd_run_ui_blocked
and not latest_cd_deploy_readback_succeeded_despite_ui_blocked
and not latest_cd_deploy_evidence_succeeded
)
latest_cd_effective_success = bool(
latest_cd_success or latest_cd_deploy_readback_succeeded_despite_ui_blocked
latest_cd_success or latest_cd_deploy_evidence_succeeded
)
latest_cd_waiting = bool(
latest_cd_status == "Waiting" and not latest_cd_deploy_evidence_succeeded
)
latest_cd_waiting = latest_cd_status == "Waiting"
host_pressure_waiting_from_stale_jobs = (
cd_jobs_stale_or_mismatched
and latest_cd_status in {"Blocked", "Canceled", "Failure"}
@@ -684,6 +692,12 @@ def build_readback(
"latest_visible_cd_run_waiting": latest_cd_waiting,
"latest_visible_cd_run_blocked": latest_cd_visible_blocked,
"latest_visible_cd_run_ui_blocked": latest_cd_run_ui_blocked,
"latest_visible_cd_deploy_evidence_succeeded_from_log": (
latest_cd_deploy_evidence_succeeded
),
"latest_visible_cd_run_level_lag_after_deploy_success": (
latest_cd_run_level_lag_after_deploy_success
),
"latest_visible_cd_deploy_readback_succeeded_despite_ui_blocked": (
latest_cd_deploy_readback_succeeded_despite_ui_blocked
),
@@ -1052,6 +1066,12 @@ def build_readback(
),
"current_main_cd_run_blocked": latest_cd_visible_blocked,
"current_main_cd_run_ui_blocked": latest_cd_run_ui_blocked,
"current_main_cd_deploy_evidence_succeeded_from_log": (
latest_cd_deploy_evidence_succeeded
),
"current_main_cd_run_level_lag_after_deploy_success": (
latest_cd_run_level_lag_after_deploy_success
),
"current_main_cd_deploy_readback_succeeded_despite_ui_blocked": (
latest_cd_deploy_readback_succeeded_despite_ui_blocked
),

View File

@@ -1267,6 +1267,14 @@ def test_build_readback_downgrades_ui_blocked_after_deploy_readback_success() ->
assert payload["readback"]["latest_visible_cd_run_status"] == "Blocked"
assert payload["readback"]["latest_visible_cd_run_ui_blocked"] is True
assert payload["readback"]["latest_visible_cd_run_blocked"] is False
assert (
payload["readback"]["latest_visible_cd_deploy_evidence_succeeded_from_log"]
is True
)
assert (
payload["readback"]["latest_visible_cd_run_level_lag_after_deploy_success"]
is True
)
assert (
payload["readback"][
"latest_visible_cd_deploy_readback_succeeded_despite_ui_blocked"
@@ -1294,6 +1302,14 @@ def test_build_readback_downgrades_ui_blocked_after_deploy_readback_success() ->
)
assert payload["rollups"]["current_main_cd_run_ui_blocked"] is True
assert payload["rollups"]["current_main_cd_run_blocked"] is False
assert (
payload["rollups"]["current_main_cd_deploy_evidence_succeeded_from_log"]
is True
)
assert (
payload["rollups"]["current_main_cd_run_level_lag_after_deploy_success"]
is True
)
assert (
payload["rollups"][
"current_main_cd_deploy_readback_succeeded_despite_ui_blocked"
@@ -1302,6 +1318,49 @@ def test_build_readback_downgrades_ui_blocked_after_deploy_readback_success() ->
)
def test_build_readback_downgrades_running_lag_after_deploy_success() -> None:
module = _load_module()
payload = module.build_readback(
actions_html=_actions_html_single_cd_run(),
actions_list_http_status=401,
actions_list_payload={"message": "token is required"},
cd_jobs_http_status=200,
cd_jobs_payload={"jobs": [], "total_count": 0},
latest_cd_build_log_http_status=200,
latest_cd_build_log_text=_cd_deploy_success_log(),
)
assert payload["status"] == "no_matching_runner_not_visible"
assert payload["readback"]["latest_visible_cd_run_status"] == "Running"
assert payload["readback"]["latest_visible_cd_run_waiting"] is False
assert payload["readback"]["latest_visible_cd_run_blocked"] is False
assert (
payload["readback"]["latest_visible_cd_deploy_evidence_succeeded_from_log"]
is True
)
assert (
payload["readback"]["latest_visible_cd_run_level_lag_after_deploy_success"]
is True
)
assert (
payload["readback"][
"latest_visible_cd_deploy_readback_succeeded_despite_ui_blocked"
]
is False
)
assert payload["rollups"]["current_main_cd_run_status"] == "Running"
assert payload["rollups"]["current_main_cd_run_waiting"] is False
assert payload["rollups"]["current_main_cd_run_blocked"] is False
assert (
payload["rollups"]["current_main_cd_deploy_evidence_succeeded_from_log"]
is True
)
assert (
payload["rollups"]["current_main_cd_run_level_lag_after_deploy_success"]
is True
)
def test_build_readback_classifies_host_pressure_waiting() -> None:
module = _load_module()
payload = module.build_readback(