This commit is contained in:
Murat Özkorkmaz
2025-10-17 15:51:04 +02:00
parent 61ee0b6e89
commit 1077322477
10 changed files with 408 additions and 0 deletions

68
docker/push-to-gitea.sh Executable file
View File

@@ -0,0 +1,68 @@
#!/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}"