diff options
Diffstat (limited to '.buildkite/hooks')
-rw-r--r-- | .buildkite/hooks/post-command | 24 | ||||
-rw-r--r-- | .buildkite/hooks/pre-command | 10 |
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 |