Files
laermsensor-stack/noise/deploy.sh
T
admin b2f6fa0993 deploy.sh: Images zusaetzlich nach Gitea pushen
Alle vier Skripte schieben das gebaute Image jetzt auch nach
gitea.fuerst-stuttgart.de/admin, damit es nicht nur an einer Stelle liegt.

Der zweite Push laeuft nach dem ersten und ist bewusst nicht fatal: schlaegt
er fehl, liegt das Image bereits in docker.citysensor.de, aus der der Stack
zieht. Das Skript meldet dann nur, dass die Zweitablage fehlt, statt den
ganzen Deploy als gescheitert auszuweisen.

Abschalten mit  REGISTRY2= ./deploy.sh

Voraussetzung ist ein  docker login gitea.fuerst-stuttgart.de  (Access Token
mit write:package genuegt).

Geprueft: noise, sensorapi, readarchive und readin liegen in beiden
Registries unter demselben Digest.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 15:38:35 +00:00

83 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
set -e
# Angepasst aus dem readin-/sensorapi-deploy.sh (urspr. /Projekte/Logbuch/deploy.sh)
# Nur linux/amd64, nativer Build auf esprimo (amd64) -> kein buildx/qemu,
# eigener Dockerfile-Name (Dockerfile_noise). Image-Name: noise.
REGISTRY="docker.citysensor.de"
# Zweite Registry (Gitea). Das Image wird dorthin zusaetzlich gepusht, damit es
# nicht nur an einer Stelle liegt. Leersetzen schaltet den zweiten Push ab:
# REGISTRY2= ./deploy.sh
REGISTRY2="${REGISTRY2-gitea.fuerst-stuttgart.de/admin}"
IMAGE_NAME="noise"
TAG="${1:-latest}"
PLATFORM="linux/amd64"
DOCKERFILE="Dockerfile_noise"
FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${TAG}"
BUILD_DATE=$(date +%d.%m.%Y)
echo "=========================================="
echo "noise (laerm_web) Deploy Script (amd64)"
echo "=========================================="
echo "Registry: ${REGISTRY}"
echo "Image: ${IMAGE_NAME}"
echo "Tag: ${TAG}"
echo "Platform: ${PLATFORM}"
echo "Dockerfile: ${DOCKERFILE}"
echo "Build-Datum: ${BUILD_DATE}"
echo "=========================================="
echo ""
# Hinweis: Login wird uebersprungen, weil die Credentials fuer ${REGISTRY}
# bereits in ~/.docker/config.json liegen.
# Bei Bedarf manuell: docker login ${REGISTRY}
echo ">>> Baue Image (nur ${PLATFORM}, nativ) ..."
docker build \
--platform "${PLATFORM}" \
-f "${DOCKERFILE}" \
-t "${FULL_IMAGE}" \
.
echo ""
echo ">>> Pushe ${FULL_IMAGE} ..."
docker push "${FULL_IMAGE}"
echo ""
# Falls ein anderer Tag als 'latest' gebaut wurde, zusaetzlich latest setzen+pushen
if [ "${TAG}" != "latest" ]; then
echo ">>> Tagge zusaetzlich als :latest ..."
docker tag "${FULL_IMAGE}" "${REGISTRY}/${IMAGE_NAME}:latest"
docker push "${REGISTRY}/${IMAGE_NAME}:latest"
echo ""
fi
# Dasselbe Image zusaetzlich in die zweite Registry. Ein Fehlschlag bricht das
# Skript nicht ab: in ${REGISTRY} liegt das Image dann bereits, der Stack kann
# es also ziehen - die Meldung sagt nur, dass die Zweitablage fehlt.
if [ -n "${REGISTRY2}" ]; then
echo ">>> Pushe zusaetzlich nach ${REGISTRY2}/${IMAGE_NAME} ..."
ok=true
docker tag "${FULL_IMAGE}" "${REGISTRY2}/${IMAGE_NAME}:${TAG}"
docker push "${REGISTRY2}/${IMAGE_NAME}:${TAG}" || ok=false
if [ "${ok}" = true ] && [ "${TAG}" != "latest" ]; then
docker tag "${FULL_IMAGE}" "${REGISTRY2}/${IMAGE_NAME}:latest"
docker push "${REGISTRY2}/${IMAGE_NAME}:latest" || ok=false
fi
if [ "${ok}" != true ]; then
echo "!!! Push nach ${REGISTRY2} fehlgeschlagen."
echo "!!! Angemeldet? docker login ${REGISTRY2%%/*}"
echo "!!! ${FULL_IMAGE} ist gepusht und einsetzbar."
fi
echo ""
fi
echo "=========================================="
echo "Build + Push fertig: ${FULL_IMAGE}"
echo "=========================================="
echo ""
echo "Danach Stack aktualisieren:"
echo " cd /opt/stacks/esprimo/noisesensors && docker compose up -d noise"