ci(soteria): label test metrics with build artifacts

This commit is contained in:
codex 2026-04-21 11:39:13 -03:00
parent 00dcc7772a
commit 85520b0aa9

13
Jenkinsfile vendored
View File

@ -216,8 +216,11 @@ EOF
tests_skipped="$(jq -r '.skipped // 0' build/test-summary.json 2>/dev/null || echo 0)" 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)" 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)" over_500="$(jq -r '.source_lines_over_500 // 0' build/test-summary.json 2>/dev/null || echo 0)"
metric_branch="$(printf '%s' "${BRANCH_NAME:-${GIT_BRANCH:-unknown}}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')" metric_branch_raw="${BRANCH_NAME:-${GIT_BRANCH:-unknown}}"
metric_branch_raw="${metric_branch_raw#origin/}"
metric_branch="$(printf '%s' "${metric_branch_raw}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')"
metric_build_number="$(printf '%s' "${BUILD_NUMBER:-unknown}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')" metric_build_number="$(printf '%s' "${BUILD_NUMBER:-unknown}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')"
metric_jenkins_job="$(printf '%s' "${JOB_NAME:-Soteria}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')"
tests_check="failed" tests_check="failed"
if [ "${test_rc}" -eq 0 ] && [ "${tests_failed}" -eq 0 ] && [ "${tests_errors}" -eq 0 ] && [ "${tests_passed}" -gt 0 ]; then if [ "${test_rc}" -eq 0 ] && [ "${tests_failed}" -eq 0 ] && [ "${tests_errors}" -eq 0 ] && [ "${tests_passed}" -gt 0 ]; then
tests_check="ok" tests_check="ok"
@ -272,8 +275,8 @@ EOF
| while IFS=$'\t' read -r test_name test_status; do | while IFS=$'\t' read -r test_name test_status; do
[ -n "${test_name}" ] || continue [ -n "${test_name}" ] || continue
escaped_test="$(printf '%s' "${test_name}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')" escaped_test="$(printf '%s' "${test_name}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')"
printf 'platform_quality_gate_test_case_result{suite="%s",test="%s",status="%s"} 1\n' \ printf 'platform_quality_gate_test_case_result{suite="%s",branch="%s",build_number="%s",jenkins_job="%s",test="%s",status="%s"} 1\n' \
"${suite}" "${escaped_test}" "${test_status}" >> "${test_case_metrics_file}" "${suite}" "${metric_branch}" "${metric_build_number}" "${metric_jenkins_job}" "${escaped_test}" "${test_status}" >> "${test_case_metrics_file}"
done done
fi fi
cat > build/pushgateway-metrics.prom <<METRICS cat > build/pushgateway-metrics.prom <<METRICS
@ -292,7 +295,7 @@ platform_quality_gate_workspace_line_coverage_percent{suite="${suite}"} ${covera
# 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}"} ${over_500} platform_quality_gate_source_lines_over_500_total{suite="${suite}"} ${over_500}
# TYPE platform_quality_gate_build_info gauge # TYPE platform_quality_gate_build_info gauge
platform_quality_gate_build_info{suite="${suite}",branch="${metric_branch}",build_number="${metric_build_number}"} 1 platform_quality_gate_build_info{suite="${suite}",branch="${metric_branch}",build_number="${metric_build_number}",jenkins_job="${metric_jenkins_job}"} 1
# TYPE soteria_quality_gate_checks_total gauge # 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="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="coverage",result="${coverage_check}"} 1
@ -307,7 +310,7 @@ METRICS
if [ -s "${test_case_metrics_file}" ]; then if [ -s "${test_case_metrics_file}" ]; then
cat "${test_case_metrics_file}" cat "${test_case_metrics_file}"
else else
printf 'platform_quality_gate_test_case_result{suite="%s",test="__no_test_cases__",status="skipped"} 1\n' "${suite}" printf 'platform_quality_gate_test_case_result{suite="%s",branch="%s",build_number="%s",jenkins_job="%s",test="__no_test_cases__",status="skipped"} 1\n' "${suite}" "${metric_branch}" "${metric_build_number}" "${metric_jenkins_job}"
fi fi
} >> build/pushgateway-metrics.prom } >> build/pushgateway-metrics.prom
if ! curl -fsS -X PUT --data-binary @build/pushgateway-metrics.prom "${gateway}/metrics/job/platform-quality-ci/suite/${suite}" >/dev/null; then if ! curl -fsS -X PUT --data-binary @build/pushgateway-metrics.prom "${gateway}/metrics/job/platform-quality-ci/suite/${suite}" >/dev/null; then