name: Build-und-Deploy on: push: branches: [ master ] jobs: build: runs-on: ubuntu-latest container: image: ci-java21-node20:latest volumes: - shared_jar_data:/shared_jar_data - shared_trigger_dir:/shared_trigger_dir steps: - name: 📥 Repository auschecken uses: actions/checkout@v4 - name: 🔎 Umgebung & Volumes shell: bash run: | set -euxo pipefail echo "JAVA_HOME=${JAVA_HOME:-}" java -version echo "Node:" node -v echo "pnpm (falls vorhanden):" pnpm -v || true echo "Volumes:" ls -ld /shared_jar_data /shared_trigger_dir - name: ⚙️ Gradle konfigurieren shell: bash run: | set -euxo pipefail mkdir -p ~/.gradle { echo "org.gradle.daemon=false" echo "org.gradle.warning.mode=all" # WICHTIG: JDK 21 aus dem Container verwenden, keine Auto-Downloads: echo "org.gradle.java.installations.auto-download=false" echo "org.gradle.java.installations.fromEnv=JAVA_HOME" echo "org.gradle.java.installations.paths=${JAVA_HOME}" } > ~/.gradle/gradle.properties cat ~/.gradle/gradle.properties - name: 🔎 Gradle-Info shell: bash run: | set -euxo pipefail chmod +x gradlew || true ./gradlew --version ./gradlew -q javaToolchains || true - name: 🛠 Baue das Projekt (ohne Tests) shell: bash run: | set -euxo pipefail ./gradlew clean bootJar -x test --info --stacktrace - name: 📦 Artefakt finden & kopieren shell: bash run: | set -euxo pipefail echo "Inhalt von build/libs:" ls -l build/libs || { echo "build/libs existiert nicht"; exit 1; } ARTIFACT="$(ls -t build/libs/*.jar 2>/dev/null | head -n1)" test -n "${ARTIFACT}" && test -f "${ARTIFACT}" || { echo "Kein JAR gefunden!"; exit 1; } echo "Gefundenes Artefakt: ${ARTIFACT}" mkdir -p /shared_jar_data /shared_jar_data/archive timestamp="$(date +'%Y%m%d-%H%M%S')" cp "${ARTIFACT}" /shared_jar_data/MyTimeTracker.jar cp "${ARTIFACT}" "/shared_jar_data/archive/MyTimeTracker-${timestamp}.jar" echo "Zielverzeichnis:" ls -l /shared_jar_data /shared_jar_data/archive - name: 🚦 Neustart der Anwendung triggern shell: bash run: | set -euxo pipefail mkdir -p /shared_trigger_dir touch /shared_trigger_dir/restart-requested