#!/bin/bash # Bring in the variables from SOLUTION file, supporting # nested substitution . SOLUTION VARS=($(sed -nE "s,(^[^#][^=]*).*$,\1,pg" SOLUTION)) for var in ${VARS[@]}; do export ${var} done RELEASE_INFO=${RELEASE_INFO:-N/A} [[ "${RELEASE_INFO}" == "N/A" ]] && { TAG=${TAG:-test-build-${OS_DISTRO}-${PACKAGE_STREAM}-$(date +%Y%m%d)} } || { TAG=${TAG:-test-${OS_DISTRO}-${PACKAGE_STREAM}-${RELEASE_INFO}} } [[ -d "templates/${OS_DISTRO}" ]] || { echo "Unrecognized OS_DISTRO: '${OS_DISTRO}'" exit -1 } if [[ -e "Dockerfile.solution.${OS_DISTRO}-${OS_RELEASE}" ]]; then SOLUTION_SUFFIX=".${OS_DISTRO}-${OS_RELEASE}" elif [[ -e "Dockerfile.solution.${OS_DISTRO}" ]]; then SOLUTION_SUFFIX=".${OS_DISTRO}" else SOLUTION_SUFFIX="" fi [[ "${SOLUTION_SUFFIX}" == "" ]] && { cat << EOF The following Dockerfile.solutions were checked, but do not exist: * Dockerfile.solution.${OS_DISTRO} * Dockerfile.solution.${OS_DISTRO}-${OS_RELEASE} Using 'Dockerfile.solution' as default. EOF } export DOCKERFILE="Dockerfile${SOLUTION_SUFFIX}" export SOLUTION="Dockerfile.solution${SOLUTION_SUFFIX}" echo "Building '${SOLUTION}' image from '${DOCKERFILE}'" docker build -t ${CONTAINER}:${TAG} -f ${DOCKERFILE} . $* || { cat << EOM Building docker image from ${DOCKERFILE} failed. EOM exit -1 } docker tag ${CONTAINER}:${TAG} ${CONTAINER} || { echo "Unable to tag docker image" exit -1 } cat << EOM ${DOCKERFILE} was built and locally tagged as ${CONTAINER}:${TAG} See 'scripts/push-image.sh' for information on pushing this tag to Harbor. EOM