69 lines
2.2 KiB
Bash
Executable File
69 lines
2.2 KiB
Bash
Executable File
#!/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}"
|