mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2026-01-13 05:11:12 +00:00
88 lines
2.5 KiB
Bash
Executable file
88 lines
2.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Get Feast project repository root and scripts directory
|
|
export PROJECT_ROOT_DIR=$(git rev-parse --show-toplevel)
|
|
export SCRIPTS_DIR=${PROJECT_ROOT_DIR}/infra/scripts
|
|
|
|
install_test_tools() {
|
|
apt-get -qq update
|
|
apt-get -y install wget netcat kafkacat build-essential
|
|
}
|
|
|
|
print_banner() {
|
|
echo "
|
|
============================================================
|
|
$1
|
|
============================================================
|
|
"
|
|
}
|
|
|
|
wait_for_docker_image(){
|
|
# This script will block until a docker image is ready
|
|
|
|
[[ -z "$1" ]] && { echo "Please pass the docker image URI as the first parameter" ; exit 1; }
|
|
oldopt=$-
|
|
set +e
|
|
|
|
DOCKER_IMAGE=$1
|
|
poll_count=0
|
|
maximum_poll_count=150
|
|
|
|
# Wait for Feast Core to be available on GCR
|
|
until docker pull "$DOCKER_IMAGE"
|
|
do
|
|
# Exit when we have tried enough times
|
|
if [[ "$poll_count" -gt "$maximum_poll_count" ]]; then
|
|
set -$oldopt
|
|
exit 1
|
|
fi
|
|
# Sleep and increment counter on failure
|
|
echo "${DOCKER_IMAGE} could not be found";
|
|
sleep 5;
|
|
((poll_count++))
|
|
done
|
|
|
|
set -$oldopt
|
|
}
|
|
|
|
# Usage: TAG=$(get_tag_release [-ms])
|
|
# Parses the last release from git tags.
|
|
# Options:
|
|
# -m - Use only tags that are tagged on the current branch
|
|
# -s - Use only stable version tags. (ie no prerelease tags).
|
|
get_tag_release() {
|
|
local GIT_TAG_CMD="git tag -l"
|
|
# Match only Semver tags
|
|
# Regular expression should match MAJOR.MINOR.PATCH[-PRERELEASE[.IDENTIFIER]]
|
|
# eg. v0.7.1 v0.7.2-alpha v0.7.2-rc.1
|
|
local TAG_REGEX='^v[0-9]+\.[0-9]+\.[0-9]+(-([0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*))?$'
|
|
local OPTIND opt
|
|
while getopts "ms" opt; do
|
|
case "${opt}" in
|
|
m)
|
|
GIT_TAG_CMD="$GIT_TAG_CMD --merged"
|
|
;;
|
|
s)
|
|
# Match only stable version tags.
|
|
TAG_REGEX="^v[0-9]+\.[0-9]+\.[0-9]+$"
|
|
;;
|
|
*)
|
|
echo "get_tag_release(): Error: Bad arguments: $@"
|
|
return 1
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND-1))
|
|
|
|
# Retrieve tags from git and filter as per regex.
|
|
local FILTERED_TAGS=$(bash -c "$GIT_TAG_CMD" | grep -P "$TAG_REGEX")
|
|
|
|
# Sort version tags in highest semver version first.
|
|
# To make sure that prerelease versions (ie versions vMAJOR.MINOR.PATCH-PRERELEASE suffix)
|
|
# are sorted after stable versions (ie vMAJOR.MINOR.PATCH), we append '_' after
|
|
# eachustable version as '_' is after '-' found in prerelease version
|
|
# alphanumerically and remove after sorting.
|
|
local SEMVER_SORTED_TAGS=$(echo "$FILTERED_TAGS" | sed -e '/-/!{s/$/_/}' | sort -rV \
|
|
| sed -e 's/_$//')
|
|
echo $(echo "$SEMVER_SORTED_TAGS" | head -n 1)
|
|
}
|