Files
container-images/build_and_push.sh
T

54 lines
2.1 KiB
Bash
Executable File

#!/bin/sh -e
REGISTRY_DOMAIN="${REGISTRY_DOMAIN:-git.joeac.net}"
REGISTRY_USER="${REGISTRY_USER:-joeac}"
ARCHITECTURE="$(lscpu | grep ^Architecture: | sed "s/Architecture:[[:space:]]*//")"
CONTAINER_NAME_PREFIX="${CONTAINER_NAME_PREFIX:-$([ "armv7" = $(echo "$ARCHITECTURE" | cut -c1-5) ] && echo "armv7/" || echo "")}"
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