summaryrefslogtreecommitdiffhomepage
path: root/.buildkite/hooks
diff options
context:
space:
mode:
Diffstat (limited to '.buildkite/hooks')
-rw-r--r--.buildkite/hooks/post-command24
-rw-r--r--.buildkite/hooks/pre-command10
2 files changed, 34 insertions, 0 deletions
diff --git a/.buildkite/hooks/post-command b/.buildkite/hooks/post-command
new file mode 100644
index 000000000..ce3111f3c
--- /dev/null
+++ b/.buildkite/hooks/post-command
@@ -0,0 +1,24 @@
+# Upload test logs on failure, if there are any.
+if [[ "${BUILDKITE_COMMAND_EXIT_STATUS}" -ne "0" ]]; then
+ declare log_count=0
+ for log in $(make testlogs 2>/dev/null | sort | uniq); do
+ buildkite-agent artifact upload "${log}"
+ log_count=$((${log_count}+1))
+ # N.B. If *all* tests fail due to some common cause, then we will
+ # end up spending way too much time uploading logs. Instead, we just
+ # upload the first 100 and stop. That is hopefully enough to debug.
+ if [[ "${log_count}" -ge 100 ]]; then
+ echo "Only uploaded first 100 failures; skipping the rest."
+ break
+ fi
+ done
+ # Attempt to clear the cache and shut down.
+ make clean || echo "make clean failed with code $?"
+ make bazel-shutdown || echo "make bazel-shutdown failed with code $?"
+fi
+
+# Kill any running containers (clear state).
+CONTAINERS="$(docker ps -q)"
+if ! [[ -z "${CONTAINERS}" ]]; then
+ docker container kill ${CONTAINERS} 2>/dev/null || true
+fi \ No newline at end of file
diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command
new file mode 100644
index 000000000..1994287e8
--- /dev/null
+++ b/.buildkite/hooks/pre-command
@@ -0,0 +1,10 @@
+# Setup for parallelization with PARTITION and TOTAL_PARTITIONS.
+export PARTITION=${BUILDKITE_PARALLEL_JOB:-0}
+PARTITION=$((${PARTITION}+1)) # 1-indexed, but PARALLEL_JOB is 0-indexed.
+export TOTAL_PARTITIONS=${BUILDKITE_PARALLEL_JOB_COUNT:-1}
+
+# Ensure Docker has experimental enabled.
+if ! grep experimental /etc/docker/daemon.json >/dev/null; then
+ make sudo TARGETS=//runsc:runsc ARGS="install --experimental=true"
+ sudo systemctl reload docker
+fi