Files
virtual-kubelet/providers/web/rust-web-provider/scripts/buildDocker.sh
2018-01-04 16:48:58 -08:00

76 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_NAME=$(basename "$0")
DIR=$(cd "$(dirname "$0")" && pwd)
ROOT_FOLDER="$DIR/.."
PUBLISH_DIR=$ROOT_FOLDER/target/publish
TARGET_NAME=rust-web-provider
IMAGE_NAME=rust-web-provider
IMAGE_VERSION=latest
BUILD_RELEASE=true
SOURCE_RELEASE_DIR=$ROOT_FOLDER/target/release
SOURCE_DEBUG_DIR=$ROOT_FOLDER/target/debug
SOURCE_DIR=$SOURCE_RELEASE_DIR
usage()
{
echo "$SCRIPT_NAME [options]"
echo "Note: You might have to run this as root or sudo."
echo ""
echo "options"
echo " -i, --image-name Image name (default: rust-web-provider)"
echo " -v, --image-version Docker Image Version (default: latest)"
echo " -r, --build-release Build release configuration - true|false (default: true)"
exit 1;
}
process_args()
{
save_next_arg=0
for arg in "$@"
do
if [ $save_next_arg -eq 1 ]; then
IMAGE_NAME="$arg"
save_next_arg=0
elif [ $save_next_arg -eq 2 ]; then
IMAGE_VERSION="$arg"
save_next_arg=0
elif [ $save_next_arg -eq 3 ]; then
BUILD_RELEASE="$arg"
save_next_arg=0
else
case "$arg" in
"-h" | "--help" ) usage;;
"-i" | "--image-name" ) save_next_arg=1;;
"-v" | "--image-version" ) save_next_arg=2;;
"-r" | "--build-release" ) save_next_arg=3;;
* ) usage;;
esac
fi
done
}
# process command line args
process_args "$@"
# build bits
if [ "$BUILD_RELEASE" == "true" ]; then
cargo build --release
else
SOURCE_DIR=$SOURCE_DEBUG_DIR
cargo build
fi
# copy release binary & Dockerfile to a "publish" folder
rm -rf "$PUBLISH_DIR"
mkdir -p "$PUBLISH_DIR"
cp "$ROOT_FOLDER/Dockerfile" "$PUBLISH_DIR"
cp "$SOURCE_DIR/$TARGET_NAME" "$PUBLISH_DIR"
# build the Docker image
pushd "$PUBLISH_DIR"
docker build -t "$IMAGE_NAME":"$IMAGE_VERSION" .
popd