#!/bin/bash # shellcheck disable=SC1004 set -e images=('debian:buster|buster' 'debian:bullseye|bullseye' 'ubuntu:focal|focal') BASENAME='exim-encrypt-dlfunc-build' TAG='latest' REGISTRY='localhost:5000' USERNAME='nobody' PASSWORD='password' while getopts "r:u:p:b:t:" OPTION; do case $OPTION in r) REGISTRY="${OPTARG}" ;; u) USERNAME="${OPTARG}" ;; p) PASSWORD="${OPTARG}" ;; b) BASENAME="${OPTARG}" ;; t) TAG="${OPTARG}" ;; *) echo "Usage: $0 [OPTIONS]" echo echo "Options:" echo " -r (default: \"${REGISTRY}\")" echo " -u (default: \"${USERNAME}\")" echo " -p (default: \"${PASSWORD}\")" echo " -b (default: \"${BASENAME}\")" echo " -t (default: \"${TAG}\")" echo exit 127 esac done REGHOST="$(echo "${REGISTRY}" | cut -d/ -f1)" if [ "${REGISTRY}" != "none" ]; then echo "🔑 Logging into »${REGHOST}«" if ! buildah login --get-login "${REGHOST}" > /dev/null 2> /dev/null; then buildah login --password "${PASSWORD}" --username "${USERNAME}" "${REGHOST}" fi fi for i in "${images[@]}"; do basectr=$(echo "${i}" | cut -d'|' -f1) name=$(echo "${i}" | cut -d'|' -f2) IMAGENAME="${BASENAME}-${name}" IIDFILE=".${IMAGENAME}.iid" IMAGETAG="${BASENAME}-${name}:${TAG}" TARGET="${REGISTRY}/${IMAGETAG}" echo "🔨 Assembling »${IMAGENAME}«" buildah build-using-dockerfile \ --from "${basectr}" \ --format docker \ --iidfile "${IIDFILE}" \ --tag "${IMAGETAG}" --build-arg BUILDTIMESTAMP="`date --iso-8601=seconds`" if [ "${REGISTRY}" != "none" ]; then echo "🚀 Pushing »${IMAGETAG}« to »${TARGET}«" buildah push "${IMAGETAG}" "${TARGET}" echo "✅ Finished »${BASENAME}«" fi rm -f "${IIDFILE}" done