#!/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 ) # HACK: These are in our docker images, need to be removed from CARGO_HOME # because we try to cache downloads across builds with CARGO_HOME # cargo lacks a facility for "system" tooling, always tries CARGO_HOME first cargo uninstall cargo-audit &>/dev/null || true cargo uninstall svgbob_cli &>/dev/null || true cargo uninstall mdbook &>/dev/null || true