diff --git a/.buildkite/hooks/libhook b/.buildkite/hooks/libhook new file mode 100644 index 0000000000..529918315d --- /dev/null +++ b/.buildkite/hooks/libhook @@ -0,0 +1,26 @@ +#!/bin/bash + +# Copyright 2025 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. + +clear_docker_containers() { + # Kill any running containers (clear state), except for "bootstrap". + for id_and_name in $(docker ps --format='{{.ID}}/{{.Names}}'); do + if [[ "$(echo "$id_and_name" | cut -d'/' -f2-)" == 'bootstrap' ]]; then + continue + fi + timeout --kill-after=10s --preserve-status 30s \ + docker container kill "$(echo "$id_and_name" | cut -d'/' -f1)" + done +} diff --git a/.buildkite/hooks/post-command b/.buildkite/hooks/post-command index 0753d01552..85c31572a2 100644 --- a/.buildkite/hooks/post-command +++ b/.buildkite/hooks/post-command @@ -1,5 +1,7 @@ set -x +source .buildkite/hooks/libhook + # Clear any downloaded credentials. rm -f repo.key @@ -70,14 +72,7 @@ if test "${BUILDKITE_COMMAND_EXIT_STATUS}" -ne "0"; then sudo rm -rf "${HOME}/go" fi -# Kill any running containers (clear state), except for "bootstrap". -for id_and_name in $(docker ps --format='{{.ID}}/{{.Names}}'); do - if [[ "$(echo "$id_and_name" | cut -d'/' -f2-)" == 'bootstrap' ]]; then - continue - fi - timeout --kill-after=10s --preserve-status 8s \ - docker container kill "$(echo "$id_and_name" | cut -d'/' -f1)" -done +clear_docker_containers set -euo pipefail diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index f031d98dfc..8dabdd6fd1 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -1,5 +1,9 @@ set -euo pipefail +source .buildkite/hooks/libhook + +clear_docker_containers + # Use a per-day bazel remote cache. As the cache object's TTL expires, they are # deleted on an ongoing basis. Such partial deletion can break the cache state. # Using per day cache will ensure that builds triggered on a certain day have