#!/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 "Invalid argument" 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}" echo "🔨 Assembling »${IMAGENAME}«" ctr="$(buildah from "$basectr")" buildah run "$ctr" /bin/sh -c 'apt-get update; \ DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get install --no-install-recommends -y \ build-essential \ exim4-daemon-heavy \ exim4-dev \ gcovr \ git \ libsodium-dev \ openssl \ pkg-config \ python3-pip \ libxml2-utils; \ DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get install --no-install-recommends -y \ debhelper \ debsigs \ devscripts \ dh-make \ git-buildpackage \ gpgv1 \ meson; \ DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get install --no-install-recommends -y \ vim; \ rm -rf /var/lib/apt/lists/*;' buildah run "$ctr" /bin/sh -c \ 'pip3 install --upgrade meson ninja; \ rm -rf ~/.cache/pip/*;' TARGET="${REGISTRY}/${BASENAME}-${name}:${TAG}" IMAGEID=$(buildah commit --format docker "$ctr" "${IMAGENAME}") if [ "${REGISTRY}" != "none" ]; then echo "🚀 Pushing »${TARGET}«" buildah push "${IMAGEID}" "${TARGET}" echo "✅ Finished »${BASENAME}«" fi done