solana/.buildkite/hooks/post-command

58 lines
1.5 KiB
Bash

#!/bin/bash -e
source ci/upload-ci-artifact.sh
#
# Add job_stats data point
#
if [[ -z $CI_BUILD_START ]]; then
echo Error: CI_BUILD_START empty
else
# make sure console outputs are uploaded as soon as possible, if any
(
shopt -s nullglob
for console_log in ./intercepted-console-*; do
gzip -f "$console_log"
upload-ci-artifact "$console_log.gz"
done
)
CI_BUILD_DURATION=$(( $(date +%s) - CI_BUILD_START + 1 ))
CI_LABEL=${BUILDKITE_LABEL:-build label missing}
PR=false
if [[ $BUILDKITE_BRANCH =~ pull/* ]]; then
PR=true
fi
SUCCESS=true
if [[ $BUILDKITE_COMMAND_EXIT_STATUS != 0 ]]; then
SUCCESS=false
fi
if [[ -n $BUILDKITE && -f "results.json" ]]; then
# extract lines which start with '{'
awk '/{.*/' results.json > sanitized-results.json
echo "~~~ Uploading test results to Buildkite Analytics"
buildkite-test-collector < sanitized-results.json
echo "~~~ Uploading test results to Datadog"
cargo2junit > results.xml < sanitized-results.json || true
if [[ -f "results.xml" ]]; then
datadog-ci junit upload --service solana results.xml
fi
fi
point_tags="pipeline=$BUILDKITE_PIPELINE_SLUG,job=$CI_LABEL,pr=$PR,success=$SUCCESS"
point_tags="${point_tags// /\\ }" # Escape spaces
point_fields="duration=$CI_BUILD_DURATION"
point_fields="${point_fields// /\\ }" # Escape spaces
point="job_stats,$point_tags $point_fields"
scripts/metrics-write-datapoint.sh "$point" || true
fi