CI Test
This commit is contained in:
68
docker/push-to-gitea.sh
Executable file
68
docker/push-to-gitea.sh
Executable 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}"
|
||||
Reference in New Issue
Block a user