diff options
| author | Tyler Mandry <tmandry@google.com> | 2023-11-07 18:11:07 -0800 |
|---|---|---|
| committer | Tyler Mandry <tmandry@google.com> | 2023-12-07 16:30:36 -0800 |
| commit | a1b9a599584e9044da30bfd8fbc0d16ca72c009e (patch) | |
| tree | 096a5e72f86cd414caec6242130d59393f20bc89 /src/ci/docker/scripts/shared.sh | |
| parent | 503e129328080e924c0ddfca6abf4c2812580102 (diff) | |
| download | rust-a1b9a599584e9044da30bfd8fbc0d16ca72c009e.tar.gz rust-a1b9a599584e9044da30bfd8fbc0d16ca72c009e.zip | |
Build Fuchsia in CI
Diffstat (limited to 'src/ci/docker/scripts/shared.sh')
| -rw-r--r-- | src/ci/docker/scripts/shared.sh | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/ci/docker/scripts/shared.sh b/src/ci/docker/scripts/shared.sh new file mode 100644 index 00000000000..9969659088d --- /dev/null +++ b/src/ci/docker/scripts/shared.sh @@ -0,0 +1,42 @@ +#!/bin/false +# shellcheck shell=bash + +# This file is intended to be sourced with `. shared.sh` or +# `source shared.sh`, hence the invalid shebang and not being +# marked as an executable file in git. + +function hide_output { + { set +x; } 2>/dev/null + on_err=" +echo ERROR: An error was encountered with the build. +cat /tmp/build.log +exit 1 +" + trap "$on_err" ERR + bash -c "while true; do sleep 30; echo \$(date) - building ...; done" & + PING_LOOP_PID=$! + "$@" &> /tmp/build.log + trap - ERR + kill $PING_LOOP_PID + set -x +} + +# See https://unix.stackexchange.com/questions/82598 +# Duplicated in src/ci/shared.sh +function retry { + echo "Attempting with retry:" "$@" + local n=1 + local max=5 + while true; do + "$@" && break || { + if [[ $n -lt $max ]]; then + sleep $n # don't retry immediately + ((n++)) + echo "Command failed. Attempt $n/$max:" + else + echo "The command has failed after $n attempts." + return 1 + fi + } + done +} |
