74 lines
1.9 KiB
Bash
Executable File
74 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
readonly SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
readonly REGISTRY_IMAGE="registry.assecutor.org/muh"
|
|
readonly POM_FILE="${SCRIPT_DIR}/backend/pom.xml"
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Verwendung:
|
|
./docker_push.sh [x.y.z]
|
|
|
|
Beispiel:
|
|
./docker_push.sh 0.9.13
|
|
./docker_push.sh
|
|
|
|
Voraussetzungen:
|
|
- Docker Buildx ist installiert
|
|
- Login zur Registry wurde bereits ausgeführt:
|
|
docker login registry.assecutor.org
|
|
|
|
Ohne Versionsargument wird automatisch die Version aus backend/pom.xml verwendet.
|
|
Optional kann VITE_API_URL als Umgebungsvariable gesetzt werden.
|
|
EOF
|
|
}
|
|
|
|
fail() {
|
|
echo "Fehler: $*" >&2
|
|
exit 1
|
|
}
|
|
|
|
require_command() {
|
|
command -v "$1" >/dev/null 2>&1 || fail "'$1' wurde nicht gefunden."
|
|
}
|
|
|
|
resolve_app_version() {
|
|
[[ -f "${POM_FILE}" ]] || fail "'${POM_FILE}' wurde nicht gefunden."
|
|
|
|
local version
|
|
version="$(sed -n '/<parent>/,/<\/parent>/!{ s/.*<version>\(.*\)<\/version>.*/\1/p; }' "${POM_FILE}" | head -1)"
|
|
|
|
[[ -n "${version}" ]] || fail "Version konnte nicht aus ${POM_FILE} ermittelt werden."
|
|
[[ "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || fail "Version in ${POM_FILE} muss das Format x.y.z haben."
|
|
echo "${version}"
|
|
}
|
|
|
|
VERSION="${1:-$(resolve_app_version)}"
|
|
|
|
if [[ "${VERSION}" == "-h" || "${VERSION}" == "--help" ]]; then
|
|
usage
|
|
exit 0
|
|
fi
|
|
|
|
if [[ ! "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
fail "Versionsnummer muss das Format x.y.z haben."
|
|
fi
|
|
|
|
require_command docker
|
|
docker buildx version >/dev/null 2>&1 || fail "Docker Buildx ist nicht verfügbar."
|
|
|
|
cd "${SCRIPT_DIR}"
|
|
|
|
echo "Verwende Release-Version ${VERSION}."
|
|
echo "Pushe Image ${REGISTRY_IMAGE}:${VERSION} ..."
|
|
docker buildx build \
|
|
--platform linux/amd64 \
|
|
--build-arg "VITE_API_URL=${VITE_API_URL:-/api}" \
|
|
-t "${REGISTRY_IMAGE}:${VERSION}" \
|
|
--push \
|
|
.
|
|
|
|
echo "Fertig: ${REGISTRY_IMAGE}:${VERSION}"
|