#!/bin/bash # Baut das Flaro-Image für beide Architekturen und legt es in die Registry. # # **Der Weg von Hand** — für den Fall, dass kein Gitea-Runner läuft. Sonst # macht das `.gitea/workflows/image.yml` bei jedem Push von selbst. # # Tools/image-veroeffentlichen.sh → :latest # Tools/image-veroeffentlichen.sh 0.2.0 → :latest und :0.2.0 # # Nur eine Architektur — deutlich schneller, weil die fremde sonst unter # Emulation läuft: # # FLARO_PLATTFORMEN=linux/amd64 Tools/image-veroeffentlichen.sh # # Vorher einmalig anmelden — das Passwort tippst du selbst ein: # # docker login git.scarriffle.com set -euo pipefail REGISTRY="${FLARO_REGISTRY:-git.scarriffle.com}" PFAD="${FLARO_IMAGE_PATH:-scarriffle/flaro}" BILD="$REGISTRY/$PFAD" FASSUNG="${1:-}" PLATTFORMEN="${FLARO_PLATTFORMEN:-linux/amd64,linux/arm64}" cd "$(dirname "$0")/.." command -v docker >/dev/null || { echo "docker fehlt."; exit 1; } # **Ohne Anmeldung bricht der Push erst nach dem ganzen Bau ab.** Zwei # Minuten Arbeit für eine Fehlermeldung, die am Anfang gestanden hätte. # Kein `docker info | grep -q`: `grep -q` beendet die Pipe beim ersten # Treffer, Docker bekommt SIGPIPE, und mit `set -o pipefail` gilt das als # Fehlschlag. Die Prüfung meldete dann „Docker läuft nicht", während es lief. if ! docker info >/dev/null 2>&1; then echo "Docker läuft nicht."; exit 1 fi if ! grep -q "$REGISTRY" ~/.docker/config.json 2>/dev/null; then echo "Nicht an $REGISTRY angemeldet. Erst:" echo echo " docker login $REGISTRY" exit 1 fi MARKEN=(-t "$BILD:latest") [ -n "$FASSUNG" ] && MARKEN+=(-t "$BILD:$FASSUNG") # **Ein eigener Builder.** Der Vorgabe-Builder von Docker Desktop kann kein # Manifest mit zwei Architekturen bauen; `docker buildx create` schon. docker buildx inspect flaro-bauer >/dev/null 2>&1 \ || docker buildx create --name flaro-bauer --use >/dev/null echo "Baue $BILD für $PLATTFORMEN." docker buildx build \ --builder flaro-bauer \ --platform "$PLATTFORMEN" \ -f server/Dockerfile \ "${MARKEN[@]}" \ --push . echo echo "Fertig. Auf dem NAS:" echo " image: $BILD:${FASSUNG:-latest}"