ci(soteria): publish per-test case metrics for flaky tracking

This commit is contained in:
codex 2026-04-20 08:35:08 -03:00
parent e4e087fe0f
commit 2a3c994cd8

21
Jenkinsfile vendored
View File

@ -258,6 +258,21 @@ EOF
esac
fi
fi
test_case_metrics_file="build/test-case-metrics.prom"
: > "${test_case_metrics_file}"
if [ -s build/go-test.json ]; then
jq -r '
select(.Test != null and (.Action=="pass" or .Action=="fail" or .Action=="skip"))
| [.Test, (if .Action=="pass" then "passed" elif .Action=="fail" then "failed" else "skipped" end)]
| @tsv
' build/go-test.json 2>/dev/null \
| while IFS=$'\t' read -r test_name test_status; do
[ -n "${test_name}" ] || continue
escaped_test="$(printf '%s' "${test_name}" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e ':a;N;$!ba;s/\n/\\n/g')"
printf 'platform_quality_gate_test_case_result{suite="%s",test="%s",status="%s"} 1\n' \
"${suite}" "${escaped_test}" "${test_status}" >> "${test_case_metrics_file}"
done
fi
cat > build/pushgateway-metrics.prom <<METRICS
# TYPE platform_quality_gate_runs_total counter
platform_quality_gate_runs_total{suite="${suite}",status="ok"} ${ok_count}
@ -282,6 +297,12 @@ soteria_quality_gate_checks_total{suite="${suite}",check="gate_glue",result="${g
soteria_quality_gate_checks_total{suite="${suite}",check="sonarqube",result="${sonarqube_check}"} 1
soteria_quality_gate_checks_total{suite="${suite}",check="supply_chain",result="${supply_chain_check}"} 1
METRICS
if [ -s "${test_case_metrics_file}" ]; then
{
echo "# TYPE platform_quality_gate_test_case_result gauge"
cat "${test_case_metrics_file}"
} >> build/pushgateway-metrics.prom
fi
if ! curl -fsS -X PUT --data-binary @build/pushgateway-metrics.prom "${gateway}/metrics/job/platform-quality-ci/suite/${suite}" >/dev/null; then
echo "warning: metrics push failed for suite=${suite}" >&2
fi