From ac68e77e60f70247d6ebaf10ee3e9765bcc5b993 Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Mon, 22 Jun 2026 08:19:28 +0100 Subject: [PATCH] build_and_push.sh --- build_and_push.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 build_and_push.sh diff --git a/build_and_push.sh b/build_and_push.sh new file mode 100755 index 0000000..4a910af --- /dev/null +++ b/build_and_push.sh @@ -0,0 +1,53 @@ +#!/bin/sh -e + +REGISTRY_DOMAIN="${REGISTRY_DOMAIN:-git.joeac.net}" +REGISTRY_USER="${REGISTRY_USER:-joeac}" +ARCHITECTURE="$(lscpu | grep ^Architecture: | cut -wf2)" +CONTAINER_NAME_PREFIX="${CONTAINER_NAME_PREFIX:-$([ "armv7" -eq $(echo "$ARCHITECTURE" | cut -c1-5) ] && "armv7/" || "")}" +ALPINE_VERSION="${ALPINE_VERSION:-$(head -n 1 alpine-version)}" +CONTAINER_PATTERN="${CONTAINER_PATTERN:-${1:-*}}" + +for container in "${CONTAINER_PATTERN}" +do + if ( ! [ -d "$container" ] ) || ( ! [ -f "${container}/Dockerfile" ] ) + then + continue + fi + + container_image_name="${REGISTRY_DOMAIN}/${REGISTRY_USER}/${CONTAINER_NAME_PREFIX}${container} + app_version="$(head -n 1 "$container/version") + podman build \ + -t "${container_image_name}:latest" \ + --build-arg "ALPINE_VERSION=${ALPINE_VERSION}" \ + --build-arg "VERSION=${app_version}" \ + "$container" + + podman image tag "${container_image_name}:latest" "${container_image_name}:alpine" + alpine_version_part="${ALPINE_VERSION}" + while [ -n "${alpine_version_part}" ] + do + app_version_part="${app_version}" + while [ -n "${app_version_part}" ] + do + podman image tag "${container_image_name}:latest" "${container_image_name}:${app_version_part}-alpine${alpine_version_part}" + app_version_part=${app_version_part%.*} + done + podman image tag "${container_image_name}:latest" "${container_image_name}:alpine${alpine_version_part}" + alpine_version_part=${alpine_version_part%.*} + done + + podman push "${container_image_name}:latest" + podman push "${container_image_name}:alpine" + alpine_version_part="${ALPINE_VERSION}" + while [ -n "${alpine_version_part}" ] + do + app_version_part="${app_version}" + while [ -n "${app_version_part}" ] + do + podman push "${container_image_name}:${app_version_part}-alpine${alpine_version_part}" + app_version_part=${app_version_part%.*} + done + podman push "${container_image_name}:alpine${alpine_version_part}" + alpine_version_part=${alpine_version_part%.*} + done +done