monitoring(testing): add branch evidence panels
This commit is contained in:
parent
e53adc17b3
commit
d599a162a9
@ -209,6 +209,8 @@ def _build_payload(
|
|||||||
"# TYPE titan_iac_quality_gate_run_status gauge",
|
"# TYPE titan_iac_quality_gate_run_status gauge",
|
||||||
f'titan_iac_quality_gate_run_status{{suite="{suite}",status="ok"}} {1 if status == "ok" else 0}',
|
f'titan_iac_quality_gate_run_status{{suite="{suite}",status="ok"}} {1 if status == "ok" else 0}',
|
||||||
f'titan_iac_quality_gate_run_status{{suite="{suite}",status="failed"}} {1 if status == "failed" else 0}',
|
f'titan_iac_quality_gate_run_status{{suite="{suite}",status="failed"}} {1 if status == "failed" else 0}',
|
||||||
|
"# TYPE platform_quality_gate_build_info gauge",
|
||||||
|
f"platform_quality_gate_build_info{build_labels} 1",
|
||||||
"# TYPE titan_iac_quality_gate_build_info gauge",
|
"# TYPE titan_iac_quality_gate_build_info gauge",
|
||||||
f"titan_iac_quality_gate_build_info{build_labels} 1",
|
f"titan_iac_quality_gate_build_info{build_labels} 1",
|
||||||
"# TYPE platform_quality_gate_workspace_line_coverage_percent gauge",
|
"# TYPE platform_quality_gate_workspace_line_coverage_percent gauge",
|
||||||
|
|||||||
@ -1138,6 +1138,24 @@ def testing_case_variable():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def testing_branch_variable():
|
||||||
|
return {
|
||||||
|
"name": "branch",
|
||||||
|
"label": "Branch",
|
||||||
|
"type": "query",
|
||||||
|
"query": f'label_values(platform_quality_gate_build_info{{suite=~"${{suite:regex}}",{PLATFORM_TEST_EXPORT_FILTER}}}, branch)',
|
||||||
|
"current": {"text": "All", "value": "$__all", "selected": True},
|
||||||
|
"options": [],
|
||||||
|
"hide": 0,
|
||||||
|
"multi": False,
|
||||||
|
"includeAll": True,
|
||||||
|
"allValue": ".*",
|
||||||
|
"refresh": 2,
|
||||||
|
"sort": 1,
|
||||||
|
"skipUrlSync": False,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def jenkins_base_variable():
|
def jenkins_base_variable():
|
||||||
return {
|
return {
|
||||||
"name": "jenkins_base",
|
"name": "jenkins_base",
|
||||||
@ -3020,6 +3038,7 @@ def build_jobs_dashboard():
|
|||||||
panels = []
|
panels = []
|
||||||
suite_var = "${suite:regex}"
|
suite_var = "${suite:regex}"
|
||||||
test_var = "${test:regex}"
|
test_var = "${test:regex}"
|
||||||
|
branch_var = "${branch:regex}"
|
||||||
success = PLATFORM_TEST_SUCCESS_STATUS
|
success = PLATFORM_TEST_SUCCESS_STATUS
|
||||||
exported = PLATFORM_TEST_EXPORT_FILTER
|
exported = PLATFORM_TEST_EXPORT_FILTER
|
||||||
runs_selector = f'suite=~"{suite_var}",{exported}'
|
runs_selector = f'suite=~"{suite_var}",{exported}'
|
||||||
@ -3031,6 +3050,7 @@ def build_jobs_dashboard():
|
|||||||
workspace_coverage_selector = f'suite=~"{suite_var}",{exported}'
|
workspace_coverage_selector = f'suite=~"{suite_var}",{exported}'
|
||||||
smell_selector = f'suite=~"{suite_var}",{exported}'
|
smell_selector = f'suite=~"{suite_var}",{exported}'
|
||||||
test_case_selector = f'suite=~"{suite_var}",test=~"{test_var}",test!="__no_test_cases__",{exported}'
|
test_case_selector = f'suite=~"{suite_var}",test=~"{test_var}",test!="__no_test_cases__",{exported}'
|
||||||
|
build_info_selector = f'suite=~"{suite_var}",branch=~"{branch_var}",{exported}'
|
||||||
|
|
||||||
suite_universe = " or ".join(
|
suite_universe = " or ".join(
|
||||||
f'label_replace(vector(1), "suite", "{suite}", "__name__", ".*")'
|
f'label_replace(vector(1), "suite", "{suite}", "__name__", ".*")'
|
||||||
@ -3138,6 +3158,12 @@ def build_jobs_dashboard():
|
|||||||
"legendFormat": "skipped · {{suite}}",
|
"legendFormat": "skipped · {{suite}}",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
recent_branch_evidence = (
|
||||||
|
f'sort_desc(count by (suite, branch) (max_over_time(platform_quality_gate_build_info{{{build_info_selector}}}[30d])))'
|
||||||
|
)
|
||||||
|
non_primary_branch_evidence = (
|
||||||
|
f'sort_desc(count by (suite, branch) (max_over_time(platform_quality_gate_build_info{{{build_info_selector},branch!~"main|master|origin/main|origin/master|unknown"}}[30d])))'
|
||||||
|
)
|
||||||
|
|
||||||
missing_tests_by_suite = (
|
missing_tests_by_suite = (
|
||||||
f'(({suite_universe}) unless on(suite) count by (suite) ({{__name__=~".*_quality_gate_tests_total",{exported}}}))'
|
f'(({suite_universe}) unless on(suite) count by (suite) ({{__name__=~".*_quality_gate_tests_total",{exported}}}))'
|
||||||
@ -3891,6 +3917,36 @@ def build_jobs_dashboard():
|
|||||||
decimals=0,
|
decimals=0,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
panels.append(
|
||||||
|
bargauge_panel(
|
||||||
|
149,
|
||||||
|
"Recent Branch Evidence by Suite (30d)",
|
||||||
|
recent_branch_evidence,
|
||||||
|
{"h": 7, "w": 12, "x": 0, "y": 80},
|
||||||
|
unit="none",
|
||||||
|
instant=True,
|
||||||
|
legend="{{suite}} · {{branch}}",
|
||||||
|
sort_order="desc",
|
||||||
|
thresholds=missing_thresholds,
|
||||||
|
decimals=0,
|
||||||
|
links=jenkins_suite_links(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
panels.append(
|
||||||
|
bargauge_panel(
|
||||||
|
150,
|
||||||
|
"Non-Primary Branch Evidence (30d)",
|
||||||
|
non_primary_branch_evidence,
|
||||||
|
{"h": 7, "w": 12, "x": 12, "y": 80},
|
||||||
|
unit="none",
|
||||||
|
instant=True,
|
||||||
|
legend="{{suite}} · {{branch}}",
|
||||||
|
sort_order="desc",
|
||||||
|
thresholds=failures_thresholds,
|
||||||
|
decimals=0,
|
||||||
|
links=jenkins_suite_links(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"uid": "atlas-jobs",
|
"uid": "atlas-jobs",
|
||||||
@ -3907,6 +3963,7 @@ def build_jobs_dashboard():
|
|||||||
"list": [
|
"list": [
|
||||||
testing_suite_variable(),
|
testing_suite_variable(),
|
||||||
testing_case_variable(),
|
testing_case_variable(),
|
||||||
|
testing_branch_variable(),
|
||||||
jenkins_base_variable(),
|
jenkins_base_variable(),
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@ -295,6 +295,8 @@ EOF
|
|||||||
if [ "${status}" != "ok" ]; then
|
if [ "${status}" != "ok" ]; then
|
||||||
gate_glue_check="failed"
|
gate_glue_check="failed"
|
||||||
fi
|
fi
|
||||||
|
metric_branch="$(printf '%s' "${BRANCH_NAME:-${GIT_BRANCH:-unknown}}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')"
|
||||||
|
metric_build_number="$(printf '%s' "${BUILD_NUMBER:-unknown}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')"
|
||||||
cat <<METRICS | curl -fsS -X PUT --data-binary @- "${gateway}/metrics/job/platform-quality-ci/suite/${suite}" >/dev/null || \
|
cat <<METRICS | curl -fsS -X PUT --data-binary @- "${gateway}/metrics/job/platform-quality-ci/suite/${suite}" >/dev/null || \
|
||||||
echo "warning: metrics push failed for suite=${suite}" >&2
|
echo "warning: metrics push failed for suite=${suite}" >&2
|
||||||
# TYPE platform_quality_gate_runs_total counter
|
# TYPE platform_quality_gate_runs_total counter
|
||||||
@ -309,6 +311,8 @@ data_prepper_quality_gate_tests_total{suite="${suite}",result="skipped"} 0
|
|||||||
platform_quality_gate_workspace_line_coverage_percent{suite="${suite}"} 0
|
platform_quality_gate_workspace_line_coverage_percent{suite="${suite}"} 0
|
||||||
# TYPE platform_quality_gate_source_lines_over_500_total gauge
|
# TYPE platform_quality_gate_source_lines_over_500_total gauge
|
||||||
platform_quality_gate_source_lines_over_500_total{suite="${suite}"} 0
|
platform_quality_gate_source_lines_over_500_total{suite="${suite}"} 0
|
||||||
|
# TYPE platform_quality_gate_build_info gauge
|
||||||
|
platform_quality_gate_build_info{suite="${suite}",branch="${metric_branch}",build_number="${metric_build_number}"} 1
|
||||||
# TYPE data_prepper_quality_gate_checks_total gauge
|
# TYPE data_prepper_quality_gate_checks_total gauge
|
||||||
data_prepper_quality_gate_checks_total{suite="${suite}",check="tests",result="not_applicable"} 1
|
data_prepper_quality_gate_checks_total{suite="${suite}",check="tests",result="not_applicable"} 1
|
||||||
data_prepper_quality_gate_checks_total{suite="${suite}",check="coverage",result="not_applicable"} 1
|
data_prepper_quality_gate_checks_total{suite="${suite}",check="coverage",result="not_applicable"} 1
|
||||||
|
|||||||
@ -3339,6 +3339,342 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": {
|
"time": {
|
||||||
@ -3442,6 +3778,25 @@
|
|||||||
"sort": 1,
|
"sort": 1,
|
||||||
"skipUrlSync": false
|
"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": "jenkins_base",
|
"name": "jenkins_base",
|
||||||
"label": "Jenkins Base URL",
|
"label": "Jenkins Base URL",
|
||||||
|
|||||||
@ -3348,6 +3348,342 @@ data:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": {
|
"time": {
|
||||||
@ -3451,6 +3787,25 @@ data:
|
|||||||
"sort": 1,
|
"sort": 1,
|
||||||
"skipUrlSync": false
|
"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": "jenkins_base",
|
"name": "jenkins_base",
|
||||||
"label": "Jenkins Base URL",
|
"label": "Jenkins Base URL",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user