mirror of https://github.com/rancher/kubectl.git
66 lines
1.4 KiB
Bash
Executable File
66 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Define usage function
|
|
usage() {
|
|
echo "Usage: $0 [-P optional image pull] kubectl_version"
|
|
exit 1
|
|
}
|
|
|
|
: "${REPO:=rancher/kubectl}"
|
|
|
|
PULL=false
|
|
# Parse options
|
|
while getopts "P" opt; do
|
|
case ${opt} in
|
|
P)
|
|
PULL=TRUE
|
|
;;
|
|
\? )
|
|
echo "Invalid option: $OPTARG" 1>&2
|
|
usage
|
|
;;
|
|
: )
|
|
echo "Invalid option: $OPTARG requires an argument" 1>&2
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND -1))
|
|
# Check if required argument is provided
|
|
if [ $# -eq 0 ]; then
|
|
echo "Missing required argument" 1>&2
|
|
usage
|
|
fi
|
|
VERSION="${1:-UNSET}"
|
|
|
|
IMAGE_NAME="$REPO:$VERSION"
|
|
echo The image to be tested is "$IMAGE_NAME"
|
|
|
|
if [ "$PULL" == "TRUE" ]; then
|
|
echo "Pulling image first..."
|
|
if ! docker image pull "$IMAGE_NAME"; then
|
|
echo "FAIL: Failed to pull image $IMAGE_NAME"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "Testing run..."
|
|
OUT=$(docker run --rm "$IMAGE_NAME" version --client=true)
|
|
RUN_RES=$?
|
|
if [[ $RUN_RES -ne 0 ]]; then
|
|
echo "FAIL: Cannot find image for Expected version (${VERSION})."
|
|
exit 1
|
|
fi
|
|
|
|
# Clean up version for comparison by stripping any suffix
|
|
EXPECTED_VERSION=${VERSION%%-*}
|
|
if [[ $RUN_RES -eq 0 && $OUT =~ .*${EXPECTED_VERSION}.* ]]; then
|
|
echo "PASS: Expected version found in output."
|
|
exit 0
|
|
fi
|
|
|
|
echo "FAIL: Expected version (${EXPECTED_VERSION}) not found in output. Using image tag (${VERSION})"
|
|
echo "Output Found:"
|
|
echo "$OUT"
|
|
exit 1
|