Initialisiere VoTiAn NG mit Docker-Build, .env-Konfiguration und Cookie-Sitzungen
This commit is contained in:
commit
1a30233269
63 files changed
+12138
No files matched your search
Executable
+93
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
readonly SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
readonly REGISTRY_IMAGE="${REGISTRY_IMAGE:-registry.assecutor.org/votianng}"
|
||||
readonly BACKEND_DIR="${SCRIPT_DIR}/backend"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Verwendung:
|
||||
./docker_push.sh [tag]
|
||||
|
||||
Beispiel:
|
||||
./docker_push.sh 0.1
|
||||
./docker_push.sh
|
||||
|
||||
Voraussetzungen:
|
||||
- Java 21 sowie Node.js 22.12 oder neuer mit npm
|
||||
- Docker läuft und Docker Buildx ist installiert
|
||||
- Login zur Registry wurde bereits ausgeführt:
|
||||
docker login registry.assecutor.org
|
||||
|
||||
Ohne Tag wird die Version aus backend/pom.xml verwendet (auch SNAPSHOT-Versionen).
|
||||
Ein expliziter Tag ändert nur den Image-Tag, nicht die Maven-Projektversion.
|
||||
REGISTRY_IMAGE überschreibt das Standardziel registry.assecutor.org/votianng.
|
||||
Gebaut werden React und das Backend einschließlich Tests für linux/amd64.
|
||||
EOF
|
||||
}
|
||||
|
||||
fail() {
|
||||
echo "Fehler: $*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
require_command() {
|
||||
command -v "$1" >/dev/null 2>&1 || fail "'$1' wurde nicht gefunden."
|
||||
}
|
||||
|
||||
resolve_pom_value() {
|
||||
local value
|
||||
value="$(
|
||||
cd "${BACKEND_DIR}" && ./mvnw -q -Dstyle.color=never -DforceStdout help:evaluate -Dexpression="$1" \
|
||||
| sed $'s/\033\\[[0-9;]*m//g' \
|
||||
| awk 'NF { last = $0 } END { print last }'
|
||||
)" || fail "Maven-Wert '$1' konnte nicht ermittelt werden."
|
||||
|
||||
[[ -n "${value}" && "${value}" != *"null object or invalid expression"* ]] \
|
||||
|| fail "Maven-Wert '$1' ist leer oder ungültig."
|
||||
printf '%s\n' "${value}"
|
||||
}
|
||||
|
||||
[[ $# -le 1 ]] || fail "Erwartet wird höchstens ein Image-Tag. Siehe --help."
|
||||
|
||||
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
require_command java
|
||||
require_command npm
|
||||
require_command docker
|
||||
[[ -x "${BACKEND_DIR}/mvnw" ]] || fail "'${BACKEND_DIR}/mvnw' wurde nicht gefunden oder ist nicht ausführbar."
|
||||
[[ -x "${SCRIPT_DIR}/build.sh" ]] || fail "'${SCRIPT_DIR}/build.sh' wurde nicht gefunden oder ist nicht ausführbar."
|
||||
[[ -f "${SCRIPT_DIR}/Dockerfile" ]] || fail "'${SCRIPT_DIR}/Dockerfile' wurde nicht gefunden."
|
||||
|
||||
VERSION="${1-$(resolve_pom_value project.version)}"
|
||||
if [[ ! "${VERSION}" =~ ^[a-zA-Z0-9_][a-zA-Z0-9_.-]{0,127}$ ]]; then
|
||||
fail "Ungültiger Image-Tag: erlaubt sind maximal 128 Zeichen aus Buchstaben, Ziffern, _, . und -; am Anfang weder . noch -."
|
||||
fi
|
||||
|
||||
docker buildx version >/dev/null 2>&1 || fail "Docker Buildx ist nicht verfügbar."
|
||||
docker info >/dev/null 2>&1 || fail "Docker-Daemon ist nicht erreichbar. Bitte Docker starten."
|
||||
|
||||
JAR_FILE_REL="backend/target/$(resolve_pom_value project.build.finalName).jar"
|
||||
JAR_FILE_ABS="${SCRIPT_DIR}/${JAR_FILE_REL}"
|
||||
|
||||
echo "Verwende Image-Tag ${VERSION}."
|
||||
echo "Baue React-Frontend und Spring-Boot-Backend einschließlich Tests ..."
|
||||
"${SCRIPT_DIR}/build.sh"
|
||||
|
||||
[[ -f "${JAR_FILE_ABS}" ]] || fail "Backend-JAR wurde nicht gefunden: ${JAR_FILE_ABS}"
|
||||
|
||||
echo "Pushe Image ${REGISTRY_IMAGE}:${VERSION} ..."
|
||||
docker buildx build \
|
||||
--platform linux/amd64 \
|
||||
-f "${SCRIPT_DIR}/Dockerfile" \
|
||||
--build-arg "JAR_FILE=${JAR_FILE_REL}" \
|
||||
-t "${REGISTRY_IMAGE}:${VERSION}" \
|
||||
--push \
|
||||
"${SCRIPT_DIR}"
|
||||
|
||||
echo "Fertig: ${REGISTRY_IMAGE}:${VERSION}"
|
||||
Reference in new issue
Block a user