From 443c70d01b79b6e8ca86d2c239667321ba324432 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Wed, 22 Apr 2026 02:26:31 -0300 Subject: [PATCH] monitoring(testing): promote atlas testing layout --- scripts/dashboards_render_atlas.py | 13 +- .../monitoring/dashboards/atlas-jobs.json | 2 +- .../monitoring/dashboards/atlas-testing.json | 1533 ++++++++++++++++- .../monitoring/grafana-dashboard-jobs.yaml | 2 +- .../monitoring/grafana-dashboard-testing.yaml | 1533 ++++++++++++++++- 5 files changed, 2994 insertions(+), 89 deletions(-) diff --git a/scripts/dashboards_render_atlas.py b/scripts/dashboards_render_atlas.py index dae98a1a..9f907add 100644 --- a/scripts/dashboards_render_atlas.py +++ b/scripts/dashboards_render_atlas.py @@ -3939,7 +3939,8 @@ def build_jobs_dashboard(): bargauge_panel( 35, "Projects Failing Sonar Gate", - f'sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{{project_key=~"{suite_var}",status!~"OK|ok"}}))', + f'(sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{{project_key=~"{suite_var}",status!~"OK|ok"}})) ' + f'or on() label_replace(vector(0), "project_key", "none", "__name__", ".*"))', {"h": 6, "w": 6, "x": 18, "y": 68}, unit="none", instant=True, @@ -4015,6 +4016,12 @@ def build_jobs_dashboard(): } +def build_testing_dashboard(): + dashboard = build_jobs_dashboard() + dashboard["uid"] = "atlas-testing" + return dashboard + + def build_power_dashboard(): panels = [] status_mapping = [ @@ -4313,6 +4320,10 @@ DASHBOARDS = { "builder": build_jobs_dashboard, "configmap": ROOT / "services" / "monitoring" / "grafana-dashboard-jobs.yaml", }, + "atlas-testing": { + "builder": build_testing_dashboard, + "configmap": ROOT / "services" / "monitoring" / "grafana-dashboard-testing.yaml", + }, "atlas-power": { "builder": build_power_dashboard, "configmap": ROOT / "services" / "monitoring" / "grafana-dashboard-power.yaml", diff --git a/services/monitoring/dashboards/atlas-jobs.json b/services/monitoring/dashboards/atlas-jobs.json index 63137489..88ee7e8b 100644 --- a/services/monitoring/dashboards/atlas-jobs.json +++ b/services/monitoring/dashboards/atlas-jobs.json @@ -3251,7 +3251,7 @@ }, "targets": [ { - "expr": "sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\",status!~\"OK|ok\"}))", + "expr": "sort_desc((sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\",status!~\"OK|ok\"})) or on() label_replace(vector(0), \"project_key\", \"none\", \"__name__\", \".*\")))", "refId": "A", "legendFormat": "{{project_key}}", "instant": true diff --git a/services/monitoring/dashboards/atlas-testing.json b/services/monitoring/dashboards/atlas-testing.json index 30ed7d56..5ee1f94c 100644 --- a/services/monitoring/dashboards/atlas-testing.json +++ b/services/monitoring/dashboards/atlas-testing.json @@ -433,7 +433,7 @@ }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -502,7 +502,7 @@ }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -571,7 +571,7 @@ }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -640,7 +640,7 @@ }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -709,7 +709,7 @@ }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -778,7 +778,7 @@ }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -847,7 +847,7 @@ }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -916,7 +916,7 @@ }, "targets": [ { - "expr": "(sum({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success\"}) or on() vector(0))", + "expr": "(sum({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) or on() vector(0))", "refId": "A", "instant": true } @@ -1210,7 +1210,7 @@ }, "targets": [ { - "expr": "(100 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) / clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 1))) or on(suite) (0 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__range])))", + "expr": "100 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) / clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 1))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1390,6 +1390,580 @@ } } }, + { + "id": 130, + "type": "timeseries", + "title": "Fail Trend: Tests", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 0, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 131, + "type": "timeseries", + "title": "Fail Trend: Coverage", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 3, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 132, + "type": "timeseries", + "title": "Fail Trend: LOC", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 6, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 133, + "type": "timeseries", + "title": "Fail Trend: Style", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 9, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 134, + "type": "timeseries", + "title": "Fail Trend: Gate Glue", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 12, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 135, + "type": "timeseries", + "title": "Fail Trend: SonarQube", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 15, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 136, + "type": "timeseries", + "title": "Fail Trend: Supply Chain", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 18, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 138, + "type": "timeseries", + "title": "Pass Trend: Tests", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 0, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 139, + "type": "timeseries", + "title": "Pass Trend: Coverage", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 3, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 140, + "type": "timeseries", + "title": "Pass Trend: LOC", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 6, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 141, + "type": "timeseries", + "title": "Pass Trend: Style", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 9, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 142, + "type": "timeseries", + "title": "Pass Trend: Gate Glue", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 12, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 143, + "type": "timeseries", + "title": "Pass Trend: SonarQube", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 15, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 144, + "type": "timeseries", + "title": "Pass Trend: Supply Chain", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 18, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, { "id": 15, "type": "bargauge", @@ -1399,10 +1973,10 @@ "uid": "atlas-vm" }, "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 33 + "h": 6, + "w": 3, + "x": 21, + "y": 39 }, "targets": [ { @@ -1471,9 +2045,9 @@ ] }, { - "id": 16, - "type": "bargauge", - "title": "Failing Checks (Suite + Check)", + "id": 145, + "type": "timeseries", + "title": "Problematic Tests Over Time (Top failures)", "datasource": { "type": "prometheus", "uid": "atlas-vm" @@ -1481,14 +2055,325 @@ "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 33 + "x": 0, + "y": 45 }, "targets": [ { - "expr": "sort_desc(sum by (suite, check) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success\"}))", + "expr": "(topk(12, sum by (suite, test, jenkins_job) (increase(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test!=\"__no_test_cases__\",status=\"failed\",exported_job=\"platform-quality-ci\"}[$__interval])))) or on() vector(0)", "refId": "A", - "legendFormat": "{{suite}} \u00b7 {{check}}", + "legendFormat": "{{suite}} \u00b7 {{test}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "links": [ + { + "title": "Open latest artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "Open Jenkins job", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/", + "targetBlank": true + } + ] + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max", + "sum" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, + { + "id": 146, + "type": "timeseries", + "title": "Selected Test Pass/Fail History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 12, + "y": 45 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", + "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "B", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", + "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "C", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", + "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ] + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "sum" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, + { + "id": 147, + "type": "bargauge", + "title": "Most Problematic Test by Suite (30d)", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 4, + "x": 20, + "y": 45 + }, + "targets": [ + { + "expr": "sort_desc((topk by (suite) (1, sum by (suite, test, jenkins_job) (increase(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test!=\"__no_test_cases__\",status=\"failed\",exported_job=\"platform-quality-ci\"}[30d])))) or on() vector(0))", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{test}}", "instant": true } ], @@ -1517,7 +2402,19 @@ "value": 5 } ] - } + }, + "links": [ + { + "title": "Open latest artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "Open Jenkins job", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/", + "targetBlank": true + } + ] }, "overrides": [] }, @@ -1532,6 +2429,103 @@ "values": false } }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ], "transformations": [ { "id": "sortBy", @@ -1545,11 +2539,10 @@ { "id": "limit", "options": { - "limit": 24 + "limit": 9 } } - ], - "description": "Top failing checks in the selected scope. Empty is healthy." + ] }, { "id": 17, @@ -1563,11 +2556,11 @@ "h": 8, "w": 12, "x": 0, - "y": 41 + "y": 53 }, "targets": [ { - "expr": "sort(((max by (suite) ({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (max by (suite) (platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))) - 1))", + "expr": "sort(((max by (suite) ({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (max by (suite) (platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))) - 1))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1648,11 +2641,11 @@ "h": 8, "w": 12, "x": 12, - "y": 41 + "y": 53 }, "targets": [ { - "expr": "sort_desc((max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))) - 1))", + "expr": "sort_desc((max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))) - 1))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1736,11 +2729,11 @@ "h": 7, "w": 6, "x": 0, - "y": 49 + "y": 61 }, "targets": [ { - "expr": "sort_desc(((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) ({__name__=~\".*_quality_gate_tests_total\",exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) ({__name__=~\".*_quality_gate_tests_total\",exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1803,11 +2796,11 @@ "h": 7, "w": 6, "x": 6, - "y": 49 + "y": 61 }, "targets": [ { - "expr": "sort_desc(((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) ({__name__=~\".*_quality_gate_checks_total\",exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) ({__name__=~\".*_quality_gate_checks_total\",exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1870,11 +2863,11 @@ "h": 7, "w": 6, "x": 12, - "y": 49 + "y": 61 }, "targets": [ { - "expr": "sort_desc(((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_workspace_line_coverage_percent{exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_workspace_line_coverage_percent{exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1937,11 +2930,11 @@ "h": 7, "w": 6, "x": 18, - "y": 49 + "y": 61 }, "targets": [ { - "expr": "sort_desc(((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_source_lines_over_500_total{exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_source_lines_over_500_total{exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -2004,7 +2997,7 @@ "h": 6, "w": 4, "x": 0, - "y": 56 + "y": 68 }, "targets": [ { @@ -2065,7 +3058,7 @@ "h": 6, "w": 4, "x": 4, - "y": 56 + "y": 68 }, "targets": [ { @@ -2134,7 +3127,7 @@ "h": 6, "w": 4, "x": 8, - "y": 56 + "y": 68 }, "targets": [ { @@ -2203,11 +3196,11 @@ "h": 6, "w": 6, "x": 12, - "y": 56 + "y": 68 }, "targets": [ { - "expr": "count by (status) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\"}) or on() label_replace(vector(0), \"status\", \"none\", \"__name__\", \".*\")", + "expr": "count by (status) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\"})", "refId": "A", "legendFormat": "{{status}}" } @@ -2254,11 +3247,11 @@ "h": 6, "w": 6, "x": 18, - "y": 56 + "y": 68 }, "targets": [ { - "expr": "sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\",status!~\"OK|ok\"}) or on() label_replace(vector(0), \"project_key\", \"none\", \"__name__\", \".*\"))", + "expr": "sort_desc((sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\",status!~\"OK|ok\"})) or on() label_replace(vector(0), \"project_key\", \"none\", \"__name__\", \".*\")))", "refId": "A", "legendFormat": "{{project_key}}", "instant": true @@ -2315,6 +3308,409 @@ } } ] + }, + { + "id": 148, + "type": "bargauge", + "title": "Missing Test-Case Metrics by Suite", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 74 + }, + "targets": [ + { + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "refId": "A", + "legendFormat": "{{suite}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] + }, + { + "id": 149, + "type": "bargauge", + "title": "Recent Branch Evidence by Suite (30d)", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 80 + }, + "targets": [ + { + "expr": "sort_desc(count by (suite, branch) (max_over_time(platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}[30d])))", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{branch}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ], + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] + }, + { + "id": 150, + "type": "bargauge", + "title": "Non-Primary Branch Evidence (30d)", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 80 + }, + "targets": [ + { + "expr": "sort_desc(count by (suite, branch) (max_over_time(platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\",branch!~\"main|master|origin/main|origin/master|unknown\"}[30d])))", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{branch}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 1 + }, + { + "color": "orange", + "value": 3 + }, + { + "color": "red", + "value": 5 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ], + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] } ], "time": { @@ -2398,6 +3794,57 @@ "refresh": 1, "sort": 1, "skipUrlSync": false + }, + { + "name": "branch", + "label": "Branch", + "type": "query", + "query": "label_values(platform_quality_gate_build_info{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}, branch)", + "current": { + "text": "All", + "value": "$__all", + "selected": true + }, + "options": [], + "hide": 0, + "multi": false, + "includeAll": true, + "allValue": ".*", + "refresh": 2, + "sort": 1, + "skipUrlSync": false + }, + { + "name": "test", + "label": "Test Case", + "type": "query", + "query": "label_values(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\"}, test)", + "current": { + "text": "All", + "value": "$__all", + "selected": true + }, + "options": [], + "hide": 0, + "multi": false, + "includeAll": true, + "allValue": ".*", + "refresh": 2, + "sort": 1, + "skipUrlSync": false + }, + { + "name": "jenkins_base", + "label": "Jenkins Base URL", + "type": "textbox", + "query": "https://ci.bstein.dev", + "current": { + "text": "https://ci.bstein.dev", + "value": "https://ci.bstein.dev", + "selected": true + }, + "hide": 0, + "skipUrlSync": false } ] } diff --git a/services/monitoring/grafana-dashboard-jobs.yaml b/services/monitoring/grafana-dashboard-jobs.yaml index e3dee740..d2d62d39 100644 --- a/services/monitoring/grafana-dashboard-jobs.yaml +++ b/services/monitoring/grafana-dashboard-jobs.yaml @@ -3260,7 +3260,7 @@ data: }, "targets": [ { - "expr": "sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\",status!~\"OK|ok\"}))", + "expr": "sort_desc((sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\",status!~\"OK|ok\"})) or on() label_replace(vector(0), \"project_key\", \"none\", \"__name__\", \".*\")))", "refId": "A", "legendFormat": "{{project_key}}", "instant": true diff --git a/services/monitoring/grafana-dashboard-testing.yaml b/services/monitoring/grafana-dashboard-testing.yaml index db008d70..ca1a4145 100644 --- a/services/monitoring/grafana-dashboard-testing.yaml +++ b/services/monitoring/grafana-dashboard-testing.yaml @@ -442,7 +442,7 @@ data: }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -511,7 +511,7 @@ data: }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -580,7 +580,7 @@ data: }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -649,7 +649,7 @@ data: }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -718,7 +718,7 @@ data: }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -787,7 +787,7 @@ data: }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -856,7 +856,7 @@ data: }, "targets": [ { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success\"})) or on() vector(0))", + "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", "refId": "A", "instant": true } @@ -925,7 +925,7 @@ data: }, "targets": [ { - "expr": "(sum({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success\"}) or on() vector(0))", + "expr": "(sum({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) or on() vector(0))", "refId": "A", "instant": true } @@ -1219,7 +1219,7 @@ data: }, "targets": [ { - "expr": "(100 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) / clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 1))) or on(suite) (0 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__range])))", + "expr": "100 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) / clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 1))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1399,6 +1399,580 @@ data: } } }, + { + "id": 130, + "type": "timeseries", + "title": "Fail Trend: Tests", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 0, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 131, + "type": "timeseries", + "title": "Fail Trend: Coverage", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 3, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 132, + "type": "timeseries", + "title": "Fail Trend: LOC", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 6, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 133, + "type": "timeseries", + "title": "Fail Trend: Style", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 9, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 134, + "type": "timeseries", + "title": "Fail Trend: Gate Glue", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 12, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 135, + "type": "timeseries", + "title": "Fail Trend: SonarQube", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 15, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 136, + "type": "timeseries", + "title": "Fail Trend: Supply Chain", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 18, + "y": 33 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 138, + "type": "timeseries", + "title": "Pass Trend: Tests", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 0, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 139, + "type": "timeseries", + "title": "Pass Trend: Coverage", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 3, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 140, + "type": "timeseries", + "title": "Pass Trend: LOC", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 6, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 141, + "type": "timeseries", + "title": "Pass Trend: Style", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 9, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 142, + "type": "timeseries", + "title": "Pass Trend: Gate Glue", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 12, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 143, + "type": "timeseries", + "title": "Pass Trend: SonarQube", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 15, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 144, + "type": "timeseries", + "title": "Pass Trend: Supply Chain", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 18, + "y": 39 + }, + "targets": [ + { + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "refId": "A", + "legendFormat": "{{suite}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none" + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max" + ] + }, + "tooltip": { + "mode": "multi" + } + } + }, { "id": 15, "type": "bargauge", @@ -1408,10 +1982,10 @@ data: "uid": "atlas-vm" }, "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 33 + "h": 6, + "w": 3, + "x": 21, + "y": 39 }, "targets": [ { @@ -1480,9 +2054,9 @@ data: ] }, { - "id": 16, - "type": "bargauge", - "title": "Failing Checks (Suite + Check)", + "id": 145, + "type": "timeseries", + "title": "Problematic Tests Over Time (Top failures)", "datasource": { "type": "prometheus", "uid": "atlas-vm" @@ -1490,14 +2064,325 @@ data: "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 33 + "x": 0, + "y": 45 }, "targets": [ { - "expr": "sort_desc(sum by (suite, check) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success\"}))", + "expr": "(topk(12, sum by (suite, test, jenkins_job) (increase(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test!=\"__no_test_cases__\",status=\"failed\",exported_job=\"platform-quality-ci\"}[$__interval])))) or on() vector(0)", "refId": "A", - "legendFormat": "{{suite}} \u00b7 {{check}}", + "legendFormat": "{{suite}} \u00b7 {{test}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "links": [ + { + "title": "Open latest artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "Open Jenkins job", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/", + "targetBlank": true + } + ] + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "max", + "sum" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, + { + "id": 146, + "type": "timeseries", + "title": "Selected Test Pass/Fail History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 12, + "y": 45 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", + "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "B", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", + "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "C", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", + "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ] + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "sum" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, + { + "id": 147, + "type": "bargauge", + "title": "Most Problematic Test by Suite (30d)", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 4, + "x": 20, + "y": 45 + }, + "targets": [ + { + "expr": "sort_desc((topk by (suite) (1, sum by (suite, test, jenkins_job) (increase(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test!=\"__no_test_cases__\",status=\"failed\",exported_job=\"platform-quality-ci\"}[30d])))) or on() vector(0))", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{test}}", "instant": true } ], @@ -1526,7 +2411,19 @@ data: "value": 5 } ] - } + }, + "links": [ + { + "title": "Open latest artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "Open Jenkins job", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/", + "targetBlank": true + } + ] }, "overrides": [] }, @@ -1541,6 +2438,103 @@ data: "values": false } }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ], "transformations": [ { "id": "sortBy", @@ -1554,11 +2548,10 @@ data: { "id": "limit", "options": { - "limit": 24 + "limit": 9 } } - ], - "description": "Top failing checks in the selected scope. Empty is healthy." + ] }, { "id": 17, @@ -1572,11 +2565,11 @@ data: "h": 8, "w": 12, "x": 0, - "y": 41 + "y": 53 }, "targets": [ { - "expr": "sort(((max by (suite) ({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (max by (suite) (platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))) - 1))", + "expr": "sort(((max by (suite) ({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (max by (suite) (platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))) - 1))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1657,11 +2650,11 @@ data: "h": 8, "w": 12, "x": 12, - "y": 41 + "y": 53 }, "targets": [ { - "expr": "sort_desc((max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))) - 1))", + "expr": "sort_desc((max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))) - 1))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1745,11 +2738,11 @@ data: "h": 7, "w": 6, "x": 0, - "y": 49 + "y": 61 }, "targets": [ { - "expr": "sort_desc(((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) ({__name__=~\".*_quality_gate_tests_total\",exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) ({__name__=~\".*_quality_gate_tests_total\",exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1812,11 +2805,11 @@ data: "h": 7, "w": 6, "x": 6, - "y": 49 + "y": 61 }, "targets": [ { - "expr": "sort_desc(((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) ({__name__=~\".*_quality_gate_checks_total\",exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) ({__name__=~\".*_quality_gate_checks_total\",exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1879,11 +2872,11 @@ data: "h": 7, "w": 6, "x": 12, - "y": 49 + "y": 61 }, "targets": [ { - "expr": "sort_desc(((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_workspace_line_coverage_percent{exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_workspace_line_coverage_percent{exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -1946,11 +2939,11 @@ data: "h": 7, "w": 6, "x": 18, - "y": 49 + "y": 61 }, "targets": [ { - "expr": "sort_desc(((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_source_lines_over_500_total{exported_job=\"platform-quality-ci\"})) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_source_lines_over_500_total{exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -2013,7 +3006,7 @@ data: "h": 6, "w": 4, "x": 0, - "y": 56 + "y": 68 }, "targets": [ { @@ -2074,7 +3067,7 @@ data: "h": 6, "w": 4, "x": 4, - "y": 56 + "y": 68 }, "targets": [ { @@ -2143,7 +3136,7 @@ data: "h": 6, "w": 4, "x": 8, - "y": 56 + "y": 68 }, "targets": [ { @@ -2212,11 +3205,11 @@ data: "h": 6, "w": 6, "x": 12, - "y": 56 + "y": 68 }, "targets": [ { - "expr": "count by (status) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\"}) or on() label_replace(vector(0), \"status\", \"none\", \"__name__\", \".*\")", + "expr": "count by (status) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\"})", "refId": "A", "legendFormat": "{{status}}" } @@ -2263,11 +3256,11 @@ data: "h": 6, "w": 6, "x": 18, - "y": 56 + "y": 68 }, "targets": [ { - "expr": "sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\",status!~\"OK|ok\"}) or on() label_replace(vector(0), \"project_key\", \"none\", \"__name__\", \".*\"))", + "expr": "sort_desc((sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{project_key=~\"${suite:regex}\",status!~\"OK|ok\"})) or on() label_replace(vector(0), \"project_key\", \"none\", \"__name__\", \".*\")))", "refId": "A", "legendFormat": "{{project_key}}", "instant": true @@ -2324,6 +3317,409 @@ data: } } ] + }, + { + "id": 148, + "type": "bargauge", + "title": "Missing Test-Case Metrics by Suite", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 74 + }, + "targets": [ + { + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "refId": "A", + "legendFormat": "{{suite}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] + }, + { + "id": 149, + "type": "bargauge", + "title": "Recent Branch Evidence by Suite (30d)", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 80 + }, + "targets": [ + { + "expr": "sort_desc(count by (suite, branch) (max_over_time(platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}[30d])))", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{branch}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ], + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] + }, + { + "id": 150, + "type": "bargauge", + "title": "Non-Primary Branch Evidence (30d)", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 80 + }, + "targets": [ + { + "expr": "sort_desc(count by (suite, branch) (max_over_time(platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\",branch!~\"main|master|origin/main|origin/master|unknown\"}[30d])))", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{branch}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 1 + }, + { + "color": "orange", + "value": 3 + }, + { + "color": "red", + "value": 5 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ], + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] } ], "time": { @@ -2407,6 +3803,57 @@ data: "refresh": 1, "sort": 1, "skipUrlSync": false + }, + { + "name": "branch", + "label": "Branch", + "type": "query", + "query": "label_values(platform_quality_gate_build_info{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}, branch)", + "current": { + "text": "All", + "value": "$__all", + "selected": true + }, + "options": [], + "hide": 0, + "multi": false, + "includeAll": true, + "allValue": ".*", + "refresh": 2, + "sort": 1, + "skipUrlSync": false + }, + { + "name": "test", + "label": "Test Case", + "type": "query", + "query": "label_values(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\"}, test)", + "current": { + "text": "All", + "value": "$__all", + "selected": true + }, + "options": [], + "hide": 0, + "multi": false, + "includeAll": true, + "allValue": ".*", + "refresh": 2, + "sort": 1, + "skipUrlSync": false + }, + { + "name": "jenkins_base", + "label": "Jenkins Base URL", + "type": "textbox", + "query": "https://ci.bstein.dev", + "current": { + "text": "https://ci.bstein.dev", + "value": "https://ci.bstein.dev", + "selected": true + }, + "hide": 0, + "skipUrlSync": false } ] }