From edb80254e7d512039e407ff983aa049a9f1e4350 Mon Sep 17 00:00:00 2001 From: codex Date: Tue, 21 Apr 2026 11:39:00 -0300 Subject: [PATCH] ci(ananke): label test metrics with build artifacts --- scripts/publish_quality_metrics.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/scripts/publish_quality_metrics.py b/scripts/publish_quality_metrics.py index 0a047ba..a8d5463 100755 --- a/scripts/publish_quality_metrics.py +++ b/scripts/publish_quality_metrics.py @@ -92,8 +92,21 @@ def _build_payload( source_lines_over_500: int, branch: str, build_number: str, + jenkins_job: str, checks: dict[str, str], ) -> str: + build_labels = { + "suite": suite, + "branch": branch, + "build_number": build_number or "unknown", + "jenkins_job": jenkins_job, + } + test_case_base_labels = { + "suite": suite, + "branch": branch, + "build_number": build_number or "unknown", + "jenkins_job": jenkins_job, + } lines = [ "# TYPE platform_quality_gate_runs_total counter", f'platform_quality_gate_runs_total{{suite="{suite}",status="ok"}} {ok_count}', @@ -110,7 +123,7 @@ def _build_payload( "# TYPE platform_quality_gate_source_lines_over_500_total gauge", f'platform_quality_gate_source_lines_over_500_total{{suite="{suite}"}} {source_lines_over_500}', "# TYPE platform_quality_gate_build_info gauge", - f'platform_quality_gate_build_info{_label_str({"suite": suite, "branch": branch, "build_number": build_number})} 1', + f"platform_quality_gate_build_info{_label_str(build_labels)} 1", "# TYPE ananke_quality_gate_checks_total gauge", "# TYPE ananke_quality_gate_publish_info gauge", f'ananke_quality_gate_publish_info{_label_str({"suite": suite, "trigger": trigger})} 1', @@ -122,12 +135,12 @@ def _build_payload( lines.append("# TYPE platform_quality_gate_test_case_result gauge") if test_cases: lines.extend( - f'platform_quality_gate_test_case_result{{suite="{suite}",test="{_escape_label(test_name)}",status="{_escape_label(test_status)}"}} 1' + f"platform_quality_gate_test_case_result{_label_str({**test_case_base_labels, 'test': test_name, 'status': test_status})} 1" for test_name, test_status in test_cases ) else: lines.append( - f'platform_quality_gate_test_case_result{{suite="{suite}",test="__no_test_cases__",status="skipped"}} 1' + f"platform_quality_gate_test_case_result{_label_str({**test_case_base_labels, 'test': '__no_test_cases__', 'status': 'skipped'})} 1" ) return "\n".join(lines) + "\n" @@ -342,6 +355,7 @@ def main(argv: list[str] | None = None) -> int: if branch.startswith("origin/"): branch = branch[len("origin/") :] build_number = os.getenv("BUILD_NUMBER", "") + jenkins_job = os.getenv("JOB_NAME", "ananke") quality_output = Path(os.getenv("ANANKE_QUALITY_OUTPUT_FILE", str(build_dir / "quality-gate.out"))) tests = _parse_go_test_counts(quality_output) test_cases = _parse_go_test_cases(quality_output) @@ -371,6 +385,7 @@ def main(argv: list[str] | None = None) -> int: source_lines_over_500=source_lines_over_500, branch=branch, build_number=build_number, + jenkins_job=jenkins_job, checks=checks, )