From 9c0b092a147c8338ef384af76883d3a0f67c1824 Mon Sep 17 00:00:00 2001 From: Igor Date: Mon, 18 May 2026 12:26:14 +0200 Subject: [PATCH 1/6] Add report plugin --- .buildkite/pipeline.py | 14 +++++++++++++- .buildkite/steps/_build.yml | 5 +++++ .buildkite/steps/_test_report.yml | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .buildkite/steps/_test_report.yml diff --git a/.buildkite/pipeline.py b/.buildkite/pipeline.py index d3018c75..1f29abc3 100644 --- a/.buildkite/pipeline.py +++ b/.buildkite/pipeline.py @@ -15,7 +15,7 @@ import sys from pathlib import Path -from buildkite_sdk import Pipeline, GroupStep +from buildkite_sdk import CommandStep, Pipeline, GroupStep sys.path.insert(0, str(Path(__file__).parent / "tools")) from qdb_pipeline import ( @@ -136,11 +136,13 @@ def generate_pipeline() -> Pipeline: pipeline = Pipeline() git_ref = get_git_ref() group_steps = {} + variants = [] for p in PLATFORMS: for bt in BUILD_TYPES: for py in PYTHON_VERSIONS: slug = p.slug(bt.lower(), f"py{py.replace('.', '')}") + variants.append(slug) # We want to use Release QuasarDB binaries when building Python API (debug and release) dependency_slug = p.slug("release") @@ -187,6 +189,16 @@ def generate_pipeline() -> Pipeline: for group, steps in group_steps.items(): group_step = GroupStep(group=group, steps=steps) pipeline.add_step(group_step) + + # Aggregate all test reports + step = load_template(STEPS_DIR / "_test_report.yml", **tvars) + step["depends_on"] = variants + for plugins in step.get("plugins", []): + for plugin_name, config in plugins.items(): + if plugin_name.startswith("bureau14/qdb-test-report"): + config["aggregate"]["variants"] = variants + pipeline.add_step(CommandStep.from_dict(step)) + return pipeline diff --git a/.buildkite/steps/_build.yml b/.buildkite/steps/_build.yml index 12b3ea19..1a44d03f 100644 --- a/.buildkite/steps/_build.yml +++ b/.buildkite/steps/_build.yml @@ -34,3 +34,8 @@ plugins: - "dist/doc.tar.gz" base_dir: "dist" promote: {} + - bureau14/qdb-test-report#sc-19015/buildkite-test-report: + title: "Test report {slug}" + job: + variant: {slug} + junit_reports_path: "tests/build/test/*.xml" diff --git a/.buildkite/steps/_test_report.yml b/.buildkite/steps/_test_report.yml new file mode 100644 index 00000000..3e991607 --- /dev/null +++ b/.buildkite/steps/_test_report.yml @@ -0,0 +1,17 @@ +agents: + queue: "default-debian-amd64" + +label: ":bar_chart: Aggregate test report" +key: "full-test-report" + +command: "true" + +allow_dependency_failure: true + +depends_on: + +plugins: + - bureau14/qdb-test-report#sc-19015/buildkite-test-report: + title: "Full test report" + aggregate: + variants: From 17373d08cede44592f9a0d3fecd2ae5a37a706cf Mon Sep 17 00:00:00 2001 From: Igor Date: Mon, 18 May 2026 12:28:52 +0200 Subject: [PATCH 2/6] fix depends_on --- .buildkite/pipeline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/pipeline.py b/.buildkite/pipeline.py index 1f29abc3..333348d3 100644 --- a/.buildkite/pipeline.py +++ b/.buildkite/pipeline.py @@ -192,7 +192,7 @@ def generate_pipeline() -> Pipeline: # Aggregate all test reports step = load_template(STEPS_DIR / "_test_report.yml", **tvars) - step["depends_on"] = variants + step["depends_on"] = [f"build-{variant}" for variant in variants] for plugins in step.get("plugins", []): for plugin_name, config in plugins.items(): if plugin_name.startswith("bureau14/qdb-test-report"): From 3fbe5f2c176979b003dec771f9622b74d2fd7279 Mon Sep 17 00:00:00 2001 From: Igor Date: Mon, 18 May 2026 14:05:05 +0200 Subject: [PATCH 3/6] only failed tests --- .buildkite/steps/_test_report.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.buildkite/steps/_test_report.yml b/.buildkite/steps/_test_report.yml index 3e991607..23de8993 100644 --- a/.buildkite/steps/_test_report.yml +++ b/.buildkite/steps/_test_report.yml @@ -13,5 +13,7 @@ depends_on: plugins: - bureau14/qdb-test-report#sc-19015/buildkite-test-report: title: "Full test report" + # Volume of tests is too big - 20k test * 48 variants = ~1M test results, over 150mb html report, we report only failed tests + only_failures: true aggregate: variants: From 065dd654851cc5ffec043f67add945ade84c211c Mon Sep 17 00:00:00 2001 From: Igor Date: Tue, 19 May 2026 10:18:55 +0200 Subject: [PATCH 4/6] update plugin --- .buildkite/pipeline.py | 4 ---- .buildkite/steps/_test_report.yml | 3 +-- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.buildkite/pipeline.py b/.buildkite/pipeline.py index 333348d3..5c2ac491 100644 --- a/.buildkite/pipeline.py +++ b/.buildkite/pipeline.py @@ -193,10 +193,6 @@ def generate_pipeline() -> Pipeline: # Aggregate all test reports step = load_template(STEPS_DIR / "_test_report.yml", **tvars) step["depends_on"] = [f"build-{variant}" for variant in variants] - for plugins in step.get("plugins", []): - for plugin_name, config in plugins.items(): - if plugin_name.startswith("bureau14/qdb-test-report"): - config["aggregate"]["variants"] = variants pipeline.add_step(CommandStep.from_dict(step)) diff --git a/.buildkite/steps/_test_report.yml b/.buildkite/steps/_test_report.yml index 23de8993..0a6234ea 100644 --- a/.buildkite/steps/_test_report.yml +++ b/.buildkite/steps/_test_report.yml @@ -15,5 +15,4 @@ plugins: title: "Full test report" # Volume of tests is too big - 20k test * 48 variants = ~1M test results, over 150mb html report, we report only failed tests only_failures: true - aggregate: - variants: + aggregate: {} From 6f424b44e47aa4b8d41ee44f918c661a4d45df59 Mon Sep 17 00:00:00 2001 From: Igor Date: Tue, 19 May 2026 11:30:42 +0200 Subject: [PATCH 5/6] update --- .buildkite/steps/_build.yml | 2 +- .buildkite/steps/_test_report.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.buildkite/steps/_build.yml b/.buildkite/steps/_build.yml index 1a44d03f..e3ea0887 100644 --- a/.buildkite/steps/_build.yml +++ b/.buildkite/steps/_build.yml @@ -34,7 +34,7 @@ plugins: - "dist/doc.tar.gz" base_dir: "dist" promote: {} - - bureau14/qdb-test-report#sc-19015/buildkite-test-report: + - bureau14/qdb-test-report#master: title: "Test report {slug}" job: variant: {slug} diff --git a/.buildkite/steps/_test_report.yml b/.buildkite/steps/_test_report.yml index 0a6234ea..d1082ed1 100644 --- a/.buildkite/steps/_test_report.yml +++ b/.buildkite/steps/_test_report.yml @@ -11,8 +11,8 @@ allow_dependency_failure: true depends_on: plugins: - - bureau14/qdb-test-report#sc-19015/buildkite-test-report: + - bureau14/qdb-test-report#master: title: "Full test report" - # Volume of tests is too big - 20k test * 48 variants = ~1M test results, over 150mb html report, we report only failed tests + # Volume of tests is huge - 20k test * 48 variants = ~1M test results, over 150mb html report, we report only failed tests in this case only_failures: true aggregate: {} From a02d8fad8c3aca44f04fca590332e823b5df38ef Mon Sep 17 00:00:00 2001 From: Igor Date: Tue, 19 May 2026 12:44:52 +0200 Subject: [PATCH 6/6] update plugin --- .buildkite/steps/_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/steps/_build.yml b/.buildkite/steps/_build.yml index e3ea0887..125db643 100644 --- a/.buildkite/steps/_build.yml +++ b/.buildkite/steps/_build.yml @@ -38,4 +38,4 @@ plugins: title: "Test report {slug}" job: variant: {slug} - junit_reports_path: "tests/build/test/*.xml" + junit_input_path: "tests/build/test/*.xml"