70-deployment/check-engineering-platform-environment.sh
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$ROOT/lib/env.sh"
ENV_FILE="${1:-}"
load_env "$ENV_FILE"
for v in EP_ENVIRONMENT EP_HTTP_HOST EP_HTTP_PORT EP_RUNTIME_ROOT EP_INSTALLATION_ROOT EP_DATABASE_HOST EP_DATABASE_PORT EP_DATABASE_NAME EP_DATABASE_USER EP_DATABASE_PASSWORD EP_DEFAULT_UI_LANGUAGE EP_SUPPORTED_LANGUAGES EP_ARTIFACT_SEED_MODE EP_SEED_MANIFEST; do
require_var "$v"
done
fail=0
check_cmd() {
if command -v "$1" >/dev/null 2>&1; then
echo "OK $1: $($1 --version 2>&1 | head -n1)"
else
echo "FAIL $1 fehlt"
fail=1
fi
}
for cmd in go node npm python3 mariadb mariadb-admin systemctl ss; do check_cmd "$cmd"; done
if command -v go >/dev/null 2>&1; then
actual="$(go env GOVERSION | sed 's/^go//')"
python3 -c 'import sys; a=tuple(map(int,sys.argv[1].split(".")[:2])); r=(1,23); print("OK Go-Version erfüllt >= 1.23") if a>=r else (_ for _ in ()).throw(SystemExit("FAIL Go-Version < 1.23"))' "$actual" || fail=1
fi
if systemctl is-active --quiet mariadb; then
echo "OK MariaDB-Systemdienst ist aktiv"
else
echo "FAIL MariaDB-Systemdienst ist nicht aktiv"
fail=1
fi
if mariadb-admin --host="$EP_DATABASE_HOST" --port="$EP_DATABASE_PORT" --user="$EP_DATABASE_USER" --password="$EP_DATABASE_PASSWORD" ping >/dev/null 2>&1; then
echo "OK Datenbankzugang für $EP_DATABASE_USER"
else
echo "FAIL Datenbankzugang für $EP_DATABASE_USER / $EP_DATABASE_NAME"
fail=1
fi
[[ -f "$EP_SEED_MANIFEST" ]] && echo "OK Seed-Manifest vorhanden" || { echo "FAIL Seed-Manifest fehlt: $EP_SEED_MANIFEST"; fail=1; }
[[ "$EP_SUPPORTED_LANGUAGES" == *de* && "$EP_SUPPORTED_LANGUAGES" == *en* && "$EP_SUPPORTED_LANGUAGES" == *uk* ]] || { echo "FAIL Sprachen de,en,uk fehlen"; fail=1; }
if ss -ltn 2>/dev/null | awk '{print $4}' | grep -Eq "[:.]${EP_HTTP_PORT}$"; then
echo "WARN Port $EP_HTTP_PORT ist bereits belegt"
else
echo "OK Port $EP_HTTP_PORT ist frei"
fi
exit "$fail"