44 lines
1.4 KiB
Bash
Executable File
44 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Baut das Multi-Arch-Image (amd64 + arm64) und schiebt es in die
|
||
# Container-Registry von Gitea.
|
||
#
|
||
# docker login git.everdc.eu # einmalig, Gitea-User + Token mit write:package
|
||
# deploy/push-image.sh # Tag aus `git describe`
|
||
# LATEST=1 deploy/push-image.sh # zusätzlich :latest setzen (nur für Releases)
|
||
#
|
||
# Ergebnis: ${REGISTRY}/${OWNER}/sultan:<version> (und ggf. :latest)
|
||
set -euo pipefail
|
||
|
||
cd "$(dirname "$0")/.."
|
||
REGISTRY="${REGISTRY:-git.everdc.eu}"
|
||
OWNER="${OWNER:-chmln-app-dev}"
|
||
IMAGE="${REGISTRY}/${OWNER}/sultan"
|
||
VERSION="${VERSION:-$(git describe --tags --always --dirty)}"
|
||
PLATFORMS="${PLATFORMS:-linux/amd64,linux/arm64}"
|
||
|
||
case "$VERSION" in
|
||
*-dirty)
|
||
echo "Arbeitsverzeichnis hat uncommittete Änderungen (${VERSION}) – erst committen." >&2
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
tags=(-t "${IMAGE}:${VERSION}")
|
||
if [ "${LATEST:-0}" = 1 ]; then
|
||
tags+=(-t "${IMAGE}:latest")
|
||
fi
|
||
|
||
# Multi-Arch-Builds brauchen einen buildx-Builder mit docker-container-Treiber.
|
||
if ! docker buildx inspect sultan-builder >/dev/null 2>&1; then
|
||
docker buildx create --name sultan-builder --driver docker-container >/dev/null
|
||
fi
|
||
|
||
docker buildx build --builder sultan-builder \
|
||
--platform "$PLATFORMS" \
|
||
--build-arg VERSION="$VERSION" \
|
||
"${tags[@]}" \
|
||
--push .
|
||
|
||
echo "==> gepusht: ${IMAGE}:${VERSION}"
|
||
docker buildx imagetools inspect "${IMAGE}:${VERSION}" | head -n 3
|