diff --git a/build b/build index 36c7819..95e7635 100755 --- a/build +++ b/build @@ -1,56 +1,79 @@ #!/bin/bash declare targets=(dev arm amd deploy private multi) declare OPTION; declare OPTARG; declare OPTIND - while getopts 'b:d:t:nyr:u:px' OPTION; do - # echo processing: option:$OPTION argument:$OPTARG index:$OPTIND remaining:${@:$OPTIND} - case "$OPTION" in - b) - # CUSTOM BASE IMAGE - BASE_IMAGE=$OPTARG - ;; - d) - # LINUX_DISTRO=$OPTARG - LINUX_DISTRO=$OPTARG - ;; - x) - # Exclude distro from image name - exclude_distro=true - ;; - t) - TAG=$OPTARG - ;; - u) - RUSER=$OPTARG - ;; - y) - try=true - ;; - p) - push=true - ;; - n) - NO_CACHE=true - ;; - r) - REPO=$OPTARG - ;; - *) echo unknown run option -$OPTARG - echo "USAGE: build target(or target)" - echo "available options -d ; -t ; -e execute test script after build; -n for --no_cache " - ;; - esac - done - shift $((OPTIND - 1)) +usage() { # Function: Print a help message. + echo "Image Build Script: Creates one or more images using a target in the docker-bake.hcl file" + echo "USAGE: $0 buildtarget " + echo "valid targets: ${targets[*]}; default: dev" + echo no argument options: + echo "-c try out the image by starting a container terminal therein, for dev target this is the default;" + echo "-x exclude distro from image name;" + echo "-n for --no_cache" + echo "-p push to repository; after build push to repository default is hub.docker.common (not need for deploy target)" + echo required argument options: + echo "-t tag following : in output image name (i.e. REPO/USER/NAME:TAG), default: latest" + echo "-u ; repository user prefix in output image name (i.e. REPO/USER/NAME:TAG)" + echo "-r ; private repo name, do not use for hub.docker.com (docker.io)" + echo "-b ; used in FROM in Dockerfile, default is official distro image (e.g. alpine:latest)" +} + +exit_abnormal() { # Function: Exit with error. + usage + exit ${1:-1} +} -[ $NO_CACHE ] && nocache="--no-cache" || nocache="" +while getopts ':b:d:t:ncr:u:pxh' OPTION; do + # echo processing: option:$OPTION argument:$OPTARG index:$OPTIND remaining:${@:$OPTIND} + case "$OPTION" in + b) + # CUSTOM BASE IMAGE + BASE_IMAGE=$OPTARG + ;; + d) + # LINUX_DISTRO=$OPTARG + LINUX_DISTRO=$OPTARG + ;; + x) + # Exclude distro from image name + exclude_distro=true + ;; + t) + TAG=$OPTARG + ;; + u) + RUSER=$OPTARG + ;; + c) + try=true + ;; + p) + push=true + ;; + n) + nocache="--no-cache" + ;; + r) + REPO=$OPTARG + ;; + h) + exit_abnormal 0 + ;; + *) + echo "unknown $0 option -$OPTARG" + exit_abnormal 4 + ;; + esac +done + +shift $((OPTIND - 1)) + target=${1:-dev} LINUX_DISTRO=${LINUX_DISTRO:-alpine} name=$2 RUSER=${3:-$RUSER} - IMAGE_NAME=$([[ $RUSER ]] && echo ${RUSER}/)${name}$([[ (! $exclude_distro) && $name ]] && echo "-")$([[ ! $exclude_distro ]] && echo ${LINUX_DISTRO}) if [[ $BASE_IMAGE ]]; then echo determining DISTRO of base image: $BASE_IMAGE