From b2f608055a70c1d0ada18778c37392bb36af91b5 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Mon, 24 Aug 2026 15:11:39 +0200 Subject: [PATCH] Versionsnummer beim Push verpflichtend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Tag des Images soll bewusst gesetzt werden, nicht aus der pom.xml hergeleitet. Ohne Argument bricht das Skript mit der Kurzhilfe ab. Damit entfällt die Auswertung der pom.xml über den Maven-Wrapper - das Skript braucht backend/mvnw nicht mehr und startet ohne Maven-Lauf. Das Format ist wieder strikt x.y.z; die Ausnahme fuer -SNAPSHOT gab es nur, weil die pom.xml als Vorgabe diente. Co-Authored-By: Claude Opus 5 (1M context) --- docker_push.sh | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/docker_push.sh b/docker_push.sh index da8ba5f..fa69887 100755 --- a/docker_push.sh +++ b/docker_push.sh @@ -5,18 +5,16 @@ set -euo pipefail readonly SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" # Paket-Registry des Gitea auf gitea.appcreation.de; der Pfad ist dort # //. -readonly REGISTRY_IMAGE="gitea.appcreation.de/appcreation/swyxweb" -readonly BACKEND_DIR="${SCRIPT_DIR}/backend" +readonly REGISTRY_IMAGE="gitea.appcreation.de/sven/swyxweb" readonly PLATFORM="linux/amd64" usage() { cat <<'EOF' Verwendung: - ./docker_push.sh [x.y.z] [--dry-run] + ./docker_push.sh [--dry-run] Beispiel: ./docker_push.sh 0.9.13 - ./docker_push.sh ./docker_push.sh 0.9.13 --dry-run # nur bauen, nicht pushen Voraussetzungen: @@ -24,7 +22,8 @@ Voraussetzungen: - Login zur Registry wurde bereits ausgeführt: docker login gitea.appcreation.de -Ohne Versionsargument wird die Version aus backend/pom.xml verwendet. +Die Versionsnummer ist Pflicht: Sie wird zum Tag des Images und muss damit +bewusst gesetzt werden. Sie wird nicht aus der pom.xml abgeleitet. Gebaut wird das Dockerfile im Wurzelverzeichnis: Es übersetzt Frontend *und* Backend selbst, ein vorheriger lokaler Maven- oder npm-Lauf ist also nicht @@ -41,21 +40,6 @@ require_command() { command -v "$1" >/dev/null 2>&1 || fail "'$1' wurde nicht gefunden." } -# Die Version steht in backend/pom.xml; ausgelesen wird sie mit dem Maven- -# Wrapper des Backends (backend/mvnw), nicht mit einem global installierten Maven. -resolve_pom_version() { - [[ -x "${BACKEND_DIR}/mvnw" ]] || fail "'${BACKEND_DIR}/mvnw' wurde nicht gefunden oder ist nicht ausführbar." - - local version - version="$( - cd "${BACKEND_DIR}" && ./mvnw -q -DforceStdout help:evaluate -Dexpression=project.version \ - | awk 'NF { last = $0 } END { print last }' - )" - - [[ -n "${version}" ]] || fail "Version konnte nicht aus der pom.xml ermittelt werden." - echo "${version}" -} - VERSION="" DRY_RUN=false @@ -78,11 +62,14 @@ for arg in "$@"; do esac done -[[ -n "${VERSION}" ]] || VERSION="$(resolve_pom_version)" +if [[ -z "${VERSION}" ]]; then + usage >&2 + echo >&2 + fail "Es muss eine Versionsnummer angegeben werden, z. B. ./docker_push.sh 0.9.13" +fi -# -SNAPSHOT ist zugelassen, weil die pom.xml zurzeit 0.0.1-SNAPSHOT trägt. -if [[ ! "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-SNAPSHOT)?$ ]]; then - fail "Versionsnummer muss das Format x.y.z oder x.y.z-SNAPSHOT haben (war: '${VERSION}')." +if [[ ! "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + fail "Versionsnummer muss das Format x.y.z haben (war: '${VERSION}')." fi require_command docker