summaryrefslogtreecommitdiffhomepage
path: root/.buildkite/summarize.sh
diff options
context:
space:
mode:
authorAdin Scannell <ascannell@google.com>2020-12-30 15:06:47 -0800
committergVisor bot <gvisor-bot@google.com>2020-12-30 15:09:12 -0800
commit899b9ba46a69094975b4f25c24a3c467c0c21276 (patch)
tree2d3e41fa6ce9bdbfa83d25f4a91f43d18fec7091 /.buildkite/summarize.sh
parent0fb5de1154411bd207dadae31c37054db9941061 (diff)
Add BuildKite annotations for failures and profiles.
This change cleans up some minor Makefile issues, and adds support for BuildKite annotations on failure and on profiles being generated. These annotations will make failures very clear and link to the artifacts. This change is a stepping stone for aggregating coverage data from all individual test jobs, as this will also happen in .buildkite/annotate.sh. PiperOrigin-RevId: 349606598
Diffstat (limited to '.buildkite/summarize.sh')
-rwxr-xr-x.buildkite/summarize.sh52
1 files changed, 52 insertions, 0 deletions
diff --git a/.buildkite/summarize.sh b/.buildkite/summarize.sh
new file mode 100755
index 000000000..ddf8c9ad4
--- /dev/null
+++ b/.buildkite/summarize.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+# Copyright 2020 The gVisor Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -xeou pipefail
+
+# This script collects metadata fragments produced by individual test shards in
+# .buildkite/hooks/postcommand, and aggregates these into a single annotation
+# that is posted to the build. In the future, this will include coverage.
+
+# Start the summary.
+declare summary
+declare status
+summary=$(mktemp --tmpdir summary.XXXXXX)
+status="info"
+
+# Download all outputs.
+declare outputs
+outputs=$(mktemp -d --tmpdir outputs.XXXXXX)
+if buildkite-agent artifact download '**/*.output' "${outputs}"; then
+ status="error"
+ echo "## Failures" >> "${summary}"
+ find "${outputs}" -type f -print | xargs -r -n 1 cat | sort >> "${summary}"
+fi
+rm -rf "${outputs}"
+
+# Attempt to find profiles, if there are any.
+declare profiles
+profiles=$(mktemp -d --tmpdir profiles.XXXXXX)
+if buildkite-agent artifact download '**/*.profile_output' "${profiles}"; then
+ echo "## Profiles" >> "${summary}"
+ find "${profiles}" -type f -print | xargs -r -n 1 cat | sort >> "${summary}"
+fi
+rm -rf "${profiles}"
+
+# Upload the final annotation.
+if [[ -s "${summary}" ]]; then
+ cat "${summary}" | buildkite-agent annotate --style "${status}"
+fi
+rm -rf "${summary}"