solana/.buildkite/hooks/post-checkout

41 lines
1017 B
Bash

#!/usr/bin/env bash
CI_BUILD_START=$(date +%s)
export CI_BUILD_START
source ci/env.sh
#
# Kill any running docker containers, which are potentially left over from the
# previous CI job
#
(
echo "+++ Killing stale docker containers"
while read -r line; do
read -r id image _ <<<"$line"
if [[ $image =~ "solanalabs/rust" ]]; then
if docker kill "$id" >/dev/null; then
echo "kill $id $image"
fi
continue
fi
done < <(docker ps | tail -n +2)
)
# Processes from previously aborted CI jobs seem to loiter, unclear why as one
# would expect the buildkite-agent to clean up all child processes of the
# aborted CI job.
# But as a workaround for now manually kill some known loiterers. These
# processes will all have the `init` process as their PPID:
(
victims=
for name in bash cargo docker solana; do
victims="$victims $(pgrep -u "$(id -u)" -P 1 -d \ $name)"
done
for victim in $victims; do
echo "Killing pid $victim"
kill -9 "$victim" || true
done
)