ci(soteria): publish per-test case metrics for flaky tracking
This commit is contained in:
parent
e4e087fe0f
commit
2a3c994cd8
21
Jenkinsfile
vendored
21
Jenkinsfile
vendored
@ -258,6 +258,21 @@ EOF
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
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
|
cat > build/pushgateway-metrics.prom <<METRICS
|
||||||
# TYPE platform_quality_gate_runs_total counter
|
# 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="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="sonarqube",result="${sonarqube_check}"} 1
|
||||||
soteria_quality_gate_checks_total{suite="${suite}",check="supply_chain",result="${supply_chain_check}"} 1
|
soteria_quality_gate_checks_total{suite="${suite}",check="supply_chain",result="${supply_chain_check}"} 1
|
||||||
METRICS
|
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
|
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
|
echo "warning: metrics push failed for suite=${suite}" >&2
|
||||||
fi
|
fi
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user