Files
enerport-web-app/docker/push-to-gitea.sh
Murat Özkorkmaz 1077322477 CI Test
2025-10-17 15:51:04 +02:00

69 lines
2.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -e # Skript bei Fehlern sofort beenden
# === .env-Datei laden ===
if [ -f .env ]; then
echo "📄 Lade Umgebungsvariablen aus .env..."
export $(grep -v '^#' .env | xargs)
else
echo "⚠️ Keine .env-Datei gefunden verwende Umgebungsvariablen oder Defaults."
fi
# === KONFIGURATION ===
GITEA_REGISTRY="${GITEA_REGISTRY:-gitea.example.com}"
GITEA_USER="${GITEA_USER:-}"
GITEA_TOKEN="${GITEA_TOKEN:-}"
DEFAULT_IMAGE="angular-web-app"
DEFAULT_TAG="latest"
# === PARAMETER ===
IMAGE_NAME="${1:-$DEFAULT_IMAGE}"
TAG="${2:-$DEFAULT_TAG}"
# === BUILD AUSFÜHREN ===
echo "🏗️ Baue Docker-Image..."
./build.sh "$IMAGE_NAME" "$TAG"
# === IMAGE-TAGGING ===
FULL_IMAGE="${GITEA_REGISTRY}/${GITEA_USER}/${IMAGE_NAME}:${TAG}"
echo "🏷️ Tagge Image für Gitea-Registry: ${FULL_IMAGE}"
docker tag "${IMAGE_NAME}:${TAG}" "${FULL_IMAGE}"
# === LOGIN ===
if [ -n "$GITEA_USER" ] && [ -n "$GITEA_TOKEN" ]; then
echo "🔐 Melde bei Gitea Registry an (${GITEA_REGISTRY})..."
echo "$GITEA_TOKEN" | docker login "$GITEA_REGISTRY" -u "$GITEA_USER" --password-stdin
else
echo "⚠️ Kein Benutzername oder Token angegeben überspringe Login."
fi
# === PRÜFEN, OB IMAGE SCHON EXISTIERT ===
echo "🔎 Prüfe, ob Image bereits in Registry existiert..."
EXISTS=false
if docker manifest inspect "${FULL_IMAGE}" >/dev/null 2>&1; then
EXISTS=true
echo "🟡 Image ${FULL_IMAGE} existiert bereits in der Registry."
else
echo "🟢 Image ${FULL_IMAGE} ist neu wird gepusht."
fi
# === DIGESTS VERGLEICHEN (wenn vorhanden) ===
if [ "$EXISTS" = true ]; then
LOCAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "${FULL_IMAGE}" 2>/dev/null | cut -d'@' -f2)
REMOTE_DIGEST=$(docker manifest inspect "${FULL_IMAGE}" 2>/dev/null | sha256sum | awk '{print $1}')
if [ -n "$LOCAL_DIGEST" ] && [ -n "$REMOTE_DIGEST" ] && [ "$LOCAL_DIGEST" = "$REMOTE_DIGEST" ]; then
echo "✅ Lokales und entferntes Image sind identisch Push wird übersprungen."
exit 0
else
echo "🆕 Unterschiede festgestellt Push wird ausgeführt."
fi
fi
# === PUSH ===
echo "⬆️ Push zum Gitea-Repository..."
docker push "${FULL_IMAGE}"
echo "✅ Upload abgeschlossen: ${FULL_IMAGE}"