Release 0.9.3
This commit is contained in:
99
docker_push.sh
Executable file
99
docker_push.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/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 APP_CONFIG_FILE="${SCRIPT_DIR}/backend/src/main/resources/application.yml"
|
||||
|
||||
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/src/main/resources/application.yml 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 "${APP_CONFIG_FILE}" ]] || fail "'${APP_CONFIG_FILE}' wurde nicht gefunden."
|
||||
|
||||
local version
|
||||
version="$(
|
||||
awk '
|
||||
$0 ~ /^muh:[[:space:]]*$/ {
|
||||
in_muh = 1
|
||||
in_app = 0
|
||||
next
|
||||
}
|
||||
|
||||
in_muh && $0 ~ /^[^[:space:]]/ {
|
||||
in_muh = 0
|
||||
in_app = 0
|
||||
}
|
||||
|
||||
in_muh && $0 ~ /^[[:space:]][[:space:]]app:[[:space:]]*$/ {
|
||||
in_app = 1
|
||||
next
|
||||
}
|
||||
|
||||
in_app && $0 ~ /^[[:space:]][[:space:]][^[:space:]]/ {
|
||||
in_app = 0
|
||||
}
|
||||
|
||||
in_muh && in_app && match($0, /^[[:space:]][[:space:]][[:space:]][[:space:]]version:[[:space:]]*"?([0-9]+\.[0-9]+\.[0-9]+)"?[[:space:]]*$/, a) {
|
||||
print a[1]
|
||||
exit
|
||||
}
|
||||
' "${APP_CONFIG_FILE}"
|
||||
)"
|
||||
|
||||
[[ -n "${version}" ]] || fail "Version konnte nicht aus ${APP_CONFIG_FILE} ermittelt werden."
|
||||
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}"
|
||||
Reference in New Issue
Block a user