diff --git a/.gitea/workflows/docker-publish.yaml b/.gitea/workflows/docker-publish.yaml index c31167fa..27090187 100644 --- a/.gitea/workflows/docker-publish.yaml +++ b/.gitea/workflows/docker-publish.yaml @@ -54,53 +54,40 @@ jobs: distribution: "temurin" cache: gradle - - name: Setup Gradle Cache - uses: actions/cache@v4 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - - # Verhindert mysteriöse Build-Fehler durch korrupte Node/Kotlin-Caches (nur web-app relevant) - - name: Cleanup stale build caches - if: matrix.service == 'web-app' - run: | - rm -rf frontend/shells/meldestelle-web/build/js/node_modules/.cache || true - rm -rf frontend/shells/meldestelle-web/build/js/.yarn/cache || true - rm -rf ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable || true - + # --- SCHRITT 1: Build mit radikalem Clean (gegen die März-Leichen) --- - name: Build Frontend (Wasm JS) if: matrix.service == 'web-app' run: | chmod +x gradlew - # Zuerst ALLES löschen, um Stand vom März zu eliminieren + # Löscht alte Build-Stände komplett ./gradlew :frontend:shells:meldestelle-web:clean - # Neu bauen mit explizitem Production-Flag ./gradlew :frontend:shells:meldestelle-web:wasmJsBrowserDistribution \ -Pproduction=true \ --max-workers=4 \ -Dkotlin.daemon.jvm.options="-Xmx4g" + # --- SCHRITT 2: Staging ohne rsync (Fix für dein Log-Fehler) --- - name: Stage Web Assets for Docker build if: matrix.service == 'web-app' run: | set -e DIST_DIR="frontend/shells/meldestelle-web/build/dist/wasmJs/productionExecutable" + TARGET_DIR="config/docker/caddy/web-app/_site" - # Sicherheitscheck: Wenn die index.html älter als 5 Minuten ist, Build abbrechen - if [ $(find "$DIST_DIR/index.html" -mmin +5) ]; then - echo "❌ FEHLER: Build-Artefakte sind veraltet! März-Leiche erkannt." + if [ ! -d "$DIST_DIR" ]; then + echo "❌ Fehler: Build-Verzeichnis nicht gefunden!" exit 1 fi - mkdir -p config/docker/caddy/web-app/_site - rsync -a --delete "$DIST_DIR/" config/docker/caddy/web-app/_site/ - echo "✓ Frische Assets vom $(date) gestaged." + # Ersetzt rsync durch sicheres Löschen & Kopieren + rm -rf "$TARGET_DIR" + mkdir -p "$TARGET_DIR" + cp -r "$DIST_DIR"/. "$TARGET_DIR/" + echo "✓ Assets für Docker vorbereitet (Stand: $(date))" + + # --- SCHRITT 3: Login & BuildX --- # NEU (sauber, nach daemon.json-Fix): - name: Login to Gitea Registry uses: docker/login-action@v3 @@ -125,7 +112,7 @@ jobs: with: images: ${{ env.REGISTRY_INTERNAL }}/${{ env.IMAGE_PREFIX }}/${{ matrix.image }} tags: | - type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} + type=raw,value=latest type=sha,format=long - name: Build and push Docker image @@ -139,10 +126,10 @@ jobs: labels: ${{ steps.meta.outputs.labels }} provenance: false sbom: false - build-args: | - DOCKER_BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') - VERSION=${{ github.sha }} - GRADLE_VERSION=${{ env.GRADLE_VERSION }} - JAVA_VERSION=${{ env.JAVA_VERSION }} - KEYCLOAK_IMAGE_TAG=${{ env.KEYCLOAK_IMAGE_TAG }} - JVM_OPTS_APPEND=${{ env.JVM_OPTS_ARM64 }} +# build-args: | +# DOCKER_BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') +# VERSION=${{ github.sha }} +# GRADLE_VERSION=${{ env.GRADLE_VERSION }} +# JAVA_VERSION=${{ env.JAVA_VERSION }} +# KEYCLOAK_IMAGE_TAG=${{ env.KEYCLOAK_IMAGE_TAG }} +# JVM_OPTS_APPEND=${{ env.JVM_OPTS_ARM64 }} diff --git a/docs/ScreenShots/Online-Nenn-Vorlage_2026-04-23_02-46.png b/docs/ScreenShots/Online-Nenn-Vorlage_2026-04-23_02-46.png new file mode 100644 index 00000000..9ab27571 Binary files /dev/null and b/docs/ScreenShots/Online-Nenn-Vorlage_2026-04-23_02-46.png differ