Versionsnummer beim Push verpflichtend
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) <noreply@anthropic.com>
This commit is contained in:
+11
-24
@@ -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
|
||||
# <Host>/<Besitzer>/<Image>.
|
||||
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 <x.y.z> [--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
|
||||
|
||||
Reference in New Issue
Block a user