name: Host-Based Deploy (Java 21 Fix) on: push: branches: - master jobs: build-and-run: # WICHTIG: Hier nutzen wir das neue Host-Label runs-on: pve-host steps: - name: Checkout Code run: | # Debug: Wer ist git.langhei.de? cat /etc/hosts ping -c 1 git.langhei.de || echo "Ping failed" # Sicherstellen, dass wir im richtigen Verzeichnis sind rm -rf ./* || true # Versuch über die Domain git clone http://git.langhei.de/Entwicklung/xxx-sphere-web.git . || \ # FALLBACK: Versuch über die IP direkt, falls DNS im Container hakt git clone http://192.168.178.93:3000/Entwicklung/xxx-sphere-web.git . git config --global http.sslVerify false git checkout master - name: Build and Deploy (LXC-Safe) run: | # 1. Java 21 im Runner-Container installieren if command -v apt-get >/dev/null; then apt-get update && apt-get install -y openjdk-21-jdk-headless elif command -v apk >/dev/null; then apk add --no-cache openjdk21 fi # 2. JAVA_HOME setzen export JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' | awk '{print $3}') export PATH=$JAVA_HOME/bin:$PATH # 3. Das JAR-File bauen (Hier brauchen wir noch kein Docker!) chmod +x gradlew ./gradlew bootJar # 4. Docker-Socket Berechtigung (für den finalen Build) chmod 666 /var/run/docker.sock # 5. Das Image klassisch bauen # Wir suchen das gebaute JAR und bauen das Image docker build -t xxx-sphere-web:latest . # 6. Container starten # Wir nutzen 'docker-compose' (mit Bindestrich) oder den Standard-Docker-Befehl if command -v docker-compose >/dev/null; then docker-compose up -d --force-recreate else # Fallback, falls compose fehlt: Alten Container stoppen und neu starten docker stop xxx-sphere-web || true docker rm xxx-sphere-web || true docker run -d --name xxx-sphere-web -p 8080:8080 xxx-sphere-web:latest fi - name: Deploy Container run: | docker compose up -d --force-recreate