### chore: aktualisiere Docker-Publish-Workflow
All checks were successful
Build and Publish Docker Images / build-and-push (., backend/services/mail/Dockerfile, mail-service, mail-service) (push) Successful in 5m47s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Successful in 2m48s

- Entferne veraltete Cache- und Bereinigungsschritte.
- Implementiere neue Staging-Methode für Web-Assets ohne rsync.
- Aktualisiere Tags für Docker-Build und kommentiere ungenutzte Build-Args aus.
- Füge neuen Screenshot für Dokumentation hinzu.
This commit is contained in:
Stefan Mogeritsch 2026-04-23 03:17:18 +02:00
parent 46d3d7cf35
commit f620f46d15
2 changed files with 21 additions and 34 deletions

View File

@ -54,53 +54,40 @@ jobs:
distribution: "temurin" distribution: "temurin"
cache: gradle cache: gradle
- name: Setup Gradle Cache # --- SCHRITT 1: Build mit radikalem Clean (gegen die März-Leichen) ---
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
- name: Build Frontend (Wasm JS) - name: Build Frontend (Wasm JS)
if: matrix.service == 'web-app' if: matrix.service == 'web-app'
run: | run: |
chmod +x gradlew 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 ./gradlew :frontend:shells:meldestelle-web:clean
# Neu bauen mit explizitem Production-Flag
./gradlew :frontend:shells:meldestelle-web:wasmJsBrowserDistribution \ ./gradlew :frontend:shells:meldestelle-web:wasmJsBrowserDistribution \
-Pproduction=true \ -Pproduction=true \
--max-workers=4 \ --max-workers=4 \
-Dkotlin.daemon.jvm.options="-Xmx4g" -Dkotlin.daemon.jvm.options="-Xmx4g"
# --- SCHRITT 2: Staging ohne rsync (Fix für dein Log-Fehler) ---
- name: Stage Web Assets for Docker build - name: Stage Web Assets for Docker build
if: matrix.service == 'web-app' if: matrix.service == 'web-app'
run: | run: |
set -e set -e
DIST_DIR="frontend/shells/meldestelle-web/build/dist/wasmJs/productionExecutable" 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 [ ! -d "$DIST_DIR" ]; then
if [ $(find "$DIST_DIR/index.html" -mmin +5) ]; then echo "❌ Fehler: Build-Verzeichnis nicht gefunden!"
echo "❌ FEHLER: Build-Artefakte sind veraltet! März-Leiche erkannt."
exit 1 exit 1
fi fi
mkdir -p config/docker/caddy/web-app/_site # Ersetzt rsync durch sicheres Löschen & Kopieren
rsync -a --delete "$DIST_DIR/" config/docker/caddy/web-app/_site/ rm -rf "$TARGET_DIR"
echo "✓ Frische Assets vom $(date) gestaged." 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): # NEU (sauber, nach daemon.json-Fix):
- name: Login to Gitea Registry - name: Login to Gitea Registry
uses: docker/login-action@v3 uses: docker/login-action@v3
@ -125,7 +112,7 @@ jobs:
with: with:
images: ${{ env.REGISTRY_INTERNAL }}/${{ env.IMAGE_PREFIX }}/${{ matrix.image }} images: ${{ env.REGISTRY_INTERNAL }}/${{ env.IMAGE_PREFIX }}/${{ matrix.image }}
tags: | tags: |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} type=raw,value=latest
type=sha,format=long type=sha,format=long
- name: Build and push Docker image - name: Build and push Docker image
@ -139,10 +126,10 @@ jobs:
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
provenance: false provenance: false
sbom: false sbom: false
build-args: | # build-args: |
DOCKER_BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') # DOCKER_BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
VERSION=${{ github.sha }} # VERSION=${{ github.sha }}
GRADLE_VERSION=${{ env.GRADLE_VERSION }} # GRADLE_VERSION=${{ env.GRADLE_VERSION }}
JAVA_VERSION=${{ env.JAVA_VERSION }} # JAVA_VERSION=${{ env.JAVA_VERSION }}
KEYCLOAK_IMAGE_TAG=${{ env.KEYCLOAK_IMAGE_TAG }} # KEYCLOAK_IMAGE_TAG=${{ env.KEYCLOAK_IMAGE_TAG }}
JVM_OPTS_APPEND=${{ env.JVM_OPTS_ARM64 }} # JVM_OPTS_APPEND=${{ env.JVM_OPTS_ARM64 }}

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB