fix(runner): classify failed cd stale jobs readback
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 33s
CD Pipeline / build-and-deploy (push) Successful in 4m15s
CD Pipeline / post-deploy-checks (push) Successful in 1m36s

This commit is contained in:
Your Name
2026-07-01 20:22:31 +08:00
parent c1bc1666f8
commit 009eb93608
2 changed files with 41 additions and 6 deletions

View File

@@ -415,6 +415,14 @@ def build_readback(
)
effective_tests_log_classifier["host_pressure_waiting"] = False
effective_tests_log_classifier["host_pressure_blocked_or_waiting"] = False
effective_cd_failure_classifier = build_log_classifier["failure_classifier"]
if (
not effective_cd_failure_classifier
and latest_cd_status in {"Blocked", "Canceled", "Failure"}
and cd_jobs_stale_or_mismatched
and cd_jobs_payload_classifier
):
effective_cd_failure_classifier = cd_jobs_payload_classifier
latest_cd_no_matching_runner_label = (
latest_cd_run.get("no_matching_runner_label", "")
or workflow_no_matching_labels.get("cd.yaml", "")
@@ -617,9 +625,7 @@ def build_readback(
controlled_profile_no_matching_runner_labels
),
"latest_visible_cd_build_log_http_status": latest_cd_build_log_http_status,
"latest_visible_cd_failure_classifier": build_log_classifier[
"failure_classifier"
],
"latest_visible_cd_failure_classifier": effective_cd_failure_classifier,
"latest_visible_cd_failure_status_code": build_log_classifier[
"failure_status_code"
],
@@ -937,9 +943,7 @@ def build_readback(
"controlled_profile_no_matching_runner_labels": (
controlled_profile_no_matching_runner_labels
),
"current_main_cd_failure_classifier": build_log_classifier[
"failure_classifier"
],
"current_main_cd_failure_classifier": effective_cd_failure_classifier,
"current_main_cd_inflight_classifier": build_log_classifier[
"inflight_classifier"
],

View File

@@ -1219,6 +1219,37 @@ def test_stale_waiting_host_pressure_log_does_not_hide_failed_cd_jobs_payload()
)
def test_failed_cd_with_stale_jobs_payload_gets_failure_classifier() -> None:
module = _load_module()
payload = module.build_readback(
actions_html=_actions_html_failed_cd_run(),
actions_list_http_status=401,
actions_list_payload={"message": "token is required"},
cd_jobs_http_status=200,
cd_jobs_payload={
"jobs": [
{
"run_id": 4043,
"name": "tests",
"head_sha": "9c4e754d3369fa2de7606e7092712cf6d85e18e2",
"conclusion": "success",
}
],
"total_count": 1,
},
)
assert payload["status"] == "cd_jobs_stale_or_mismatched"
assert payload["readback"]["latest_visible_cd_run_status"] == "Failure"
assert payload["readback"]["cd_run_jobs_head_sha_mismatch"] is True
assert payload["readback"]["latest_visible_cd_failure_classifier"] == (
"cd_jobs_api_head_sha_mismatch_for_visible_cd_run"
)
assert payload["rollups"]["current_main_cd_failure_classifier"] == (
"cd_jobs_api_head_sha_mismatch_for_visible_cd_run"
)
def test_interrupted_host_pressure_reports_postgres_recovery_cpu() -> None:
module = _load_module()
payload = module.build_readback(