From 9db28692bda4b59fae05e6d8518465f3b6ea76f8 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Sat, 18 Apr 2026 16:34:05 -0300 Subject: [PATCH] ci(metrics): publish quality checks series for dashboard contract --- Jenkinsfile | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 39d784a..24766be 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -102,7 +102,7 @@ spec: } } } - stage('Unit tests') { + stage('Run quality gate') { steps { container('tester') { sh ''' @@ -182,7 +182,18 @@ EOF tests_skipped="$(jq -r '.skipped // 0' build/test-summary.json 2>/dev/null || echo 0)" coverage_percent="$(jq -r '.coverage_percent // 0' build/test-summary.json 2>/dev/null || echo 0)" over_500="$(jq -r '.source_lines_over_500 // 0' build/test-summary.json 2>/dev/null || echo 0)" - cat </dev/null + tests_check="failed" + if [ "${test_rc}" -eq 0 ] && [ "${tests_failed}" -eq 0 ] && [ "${tests_errors}" -eq 0 ] && [ "${tests_passed}" -gt 0 ]; then + tests_check="ok" + fi + coverage_check="$(awk -v value="${coverage_percent}" 'BEGIN { if ((value + 0) >= 95) { print "ok" } else { print "failed" } }')" + loc_check="failed" + if [ "${over_500}" -eq 0 ]; then + loc_check="ok" + fi + if ! cat </dev/null; then + echo "warning: metrics push failed for suite=${suite}" >&2 + fi # TYPE platform_quality_gate_runs_total counter platform_quality_gate_runs_total{suite="${suite}",status="ok"} ${ok_count} platform_quality_gate_runs_total{suite="${suite}",status="failed"} ${failed_count} @@ -197,12 +208,16 @@ soteria_quality_gate_coverage_percent{suite="${suite}"} ${coverage_percent} platform_quality_gate_workspace_line_coverage_percent{suite="${suite}"} ${coverage_percent} # TYPE platform_quality_gate_source_lines_over_500_total gauge platform_quality_gate_source_lines_over_500_total{suite="${suite}"} ${over_500} +# TYPE soteria_quality_gate_checks_total gauge +soteria_quality_gate_checks_total{suite="${suite}",check="tests",result="${tests_check}"} 1 +soteria_quality_gate_checks_total{suite="${suite}",check="coverage",result="${coverage_check}"} 1 +soteria_quality_gate_checks_total{suite="${suite}",check="loc",result="${loc_check}"} 1 METRICS ''' } } } - stage('Enforce test result') { + stage('Enforce quality gate') { steps { container('tester') { sh '''