name: Build-und-Deploy on: push: branches: - master jobs: build: runs-on: ubuntu-latest steps: # Node 20 + Git für Node-Actions (checkout) und Vaadin/Vite - name: 🧰 Node 20 & Git installieren run: | apt-get update apt-get install -y curl ca-certificates gnupg git curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs node -v && npm -v && git --version # pnpm via Corepack (Vaadin 24 nutzt Vite/pnpm) corepack enable corepack prepare pnpm@latest --activate pnpm -v - name: 📥 Repository auschecken uses: actions/checkout@v4 - name: 🧼 IP-Adresse von Gitea zu /etc/hosts hinzufügen run: echo "172.26.0.2 gitea" >> /etc/hosts - name: ⚙️ Gradle konfigurieren working-directory: ${{ github.workspace }} run: | rm -rf ~/.gradle/jdks ~/.gradle/.tmp/jdks mkdir -p ~/.gradle { echo "org.gradle.java.installations.auto-detect=true" echo "org.gradle.java.installations.auto-download=false" } > ~/.gradle/gradle.properties - name: 🔎 Umgebung prüfen working-directory: ${{ github.workspace }} run: | set -x echo "PWD=$(pwd)" echo "GITHUB_WORKSPACE=${GITHUB_WORKSPACE}" java -version ./gradlew -v ./gradlew -q javaToolchains || true ls -la - name: 🛠 Baue das Projekt (ohne Tests) working-directory: ${{ github.workspace }} env: CI: "true" run: | set -euo pipefail test -f ./gradlew || { echo "❌ gradlew fehlt"; exit 1; } chmod +x ./gradlew || true ./gradlew clean build -x test --no-daemon --info --stacktrace echo "Build-Output (build/libs):" ls -l build/libs || true - name: 📦 JAR ins Shared Volume kopieren und archivieren working-directory: ${{ github.workspace }} run: | set -euo pipefail # Ersten SNAPSHOT-JAR greifen (falls der Name leicht variiert) JAR="$(ls -1 build/libs/*-SNAPSHOT.jar 2>/dev/null | head -n1)" if [ -z "${JAR:-}" ] || [ ! -f "$JAR" ]; then echo "❌ Kein JAR in build/libs gefunden"; exit 1 fi mkdir -p /shared_jar_data /shared_jar_data/archive timestamp=$(date +"%Y%m%d-%H%M%S") cp "$JAR" /shared_jar_data/MyTimeTracker-0.0.1-SNAPSHOT.jar cp "$JAR" "/shared_jar_data/archive/MyTimeTracker-$timestamp.jar" echo "📂 /shared_jar_data:" ls -l /shared_jar_data || true echo "📂 /shared_jar_data/archive:" ls -l /shared_jar_data/archive || true - name: 🚦 Neustart der Anwendung triggern run: | mkdir -p /shared_trigger_dir touch /shared_trigger_dir/restart-requested