2021-06-01 19:11:07 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
checks-reporter-with-killswitch() {
|
|
|
|
if [ "$CHECKS_REPORTER_ACTIVE" == "true" ] ; then
|
|
|
|
yarn run github-checks-reporter "$@"
|
|
|
|
else
|
|
|
|
arguments=("$@");
|
|
|
|
"${arguments[@]:1}";
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
is_pr() {
|
|
|
|
[[ "${GITHUB_PR_NUMBER-}" ]] && return
|
|
|
|
false
|
|
|
|
}
|
|
|
|
|
|
|
|
verify_no_git_changes() {
|
|
|
|
RED='\033[0;31m'
|
|
|
|
C_RESET='\033[0m' # Reset color
|
|
|
|
|
2021-10-19 23:12:31 +02:00
|
|
|
GIT_CHANGES="$(git ls-files --modified -- . ':!:.bazelrc')"
|
2021-06-01 19:11:07 +02:00
|
|
|
if [ "$GIT_CHANGES" ]; then
|
|
|
|
echo -e "\n${RED}ERROR: '$1' caused changes to the following files:${C_RESET}\n"
|
|
|
|
echo -e "$GIT_CHANGES\n"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
# docker_run can be used in place of `docker run`
|
|
|
|
# it automatically passes along all of Buildkite's tracked environment variables, and mounts the buildkite-agent in the running container
|
|
|
|
docker_run() {
|
|
|
|
args=()
|
|
|
|
|
|
|
|
if [[ -n "${BUILDKITE_ENV_FILE:-}" ]] ; then
|
|
|
|
# Read in the env file and convert to --env params for docker
|
|
|
|
# This is because --env-file doesn't support newlines or quotes per https://docs.docker.com/compose/env-file/#syntax-rules
|
|
|
|
while read -r var; do
|
|
|
|
args+=( --env "${var%%=*}" )
|
|
|
|
done < "$BUILDKITE_ENV_FILE"
|
|
|
|
fi
|
|
|
|
|
|
|
|
BUILDKITE_AGENT_BINARY_PATH=$(command -v buildkite-agent)
|
|
|
|
args+=(
|
|
|
|
"--env" "BUILDKITE_JOB_ID"
|
|
|
|
"--env" "BUILDKITE_BUILD_ID"
|
|
|
|
"--env" "BUILDKITE_AGENT_ACCESS_TOKEN"
|
|
|
|
"--volume" "$BUILDKITE_AGENT_BINARY_PATH:/usr/bin/buildkite-agent"
|
|
|
|
)
|
|
|
|
|
|
|
|
docker run "${args[@]}" "$@"
|
|
|
|
}
|
2021-09-16 17:28:07 +02:00
|
|
|
|
|
|
|
is_test_execution_step() {
|
|
|
|
buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" 'true'
|
|
|
|
}
|
|
|
|
|
|
|
|
retry() {
|
|
|
|
local retries=$1; shift
|
|
|
|
local delay=$1; shift
|
|
|
|
local attempts=1
|
|
|
|
|
|
|
|
until "$@"; do
|
|
|
|
retry_exit_status=$?
|
|
|
|
echo "Exited with $retry_exit_status" >&2
|
|
|
|
if (( retries == "0" )); then
|
|
|
|
return $retry_exit_status
|
|
|
|
elif (( attempts == retries )); then
|
|
|
|
echo "Failed $attempts retries" >&2
|
|
|
|
return $retry_exit_status
|
|
|
|
else
|
|
|
|
echo "Retrying $((retries - attempts)) more times..." >&2
|
|
|
|
attempts=$((attempts + 1))
|
|
|
|
sleep "$delay"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
2021-10-02 01:01:42 +02:00
|
|
|
|
|
|
|
set_git_merge_base() {
|
|
|
|
GITHUB_PR_MERGE_BASE="$(buildkite-agent meta-data get merge-base --default '')"
|
|
|
|
|
|
|
|
if [[ ! "$GITHUB_PR_MERGE_BASE" ]]; then
|
|
|
|
git fetch origin "$GITHUB_PR_TARGET_BRANCH"
|
|
|
|
GITHUB_PR_MERGE_BASE="$(git merge-base HEAD FETCH_HEAD)"
|
|
|
|
buildkite-agent meta-data set merge-base "$GITHUB_PR_MERGE_BASE"
|
|
|
|
fi
|
|
|
|
|
|
|
|
export GITHUB_PR_MERGE_BASE
|
|
|
|
}
|