fix: publish-apk.ps1 PowerShell 5.1 Kompatibilitaet

- En-Dash durch Hyphen ersetzt (UTF-8 Encoding-Problem)
- SSH-Befehle: && durch ; ersetzt (PS 5.1 kennt kein &&)
- 2>/dev/null aus PS-Parsing entfernt (String-Konkatenation)
- SSH-Array-Rueckgabe korrekt behandeln (letztes Element)
This commit is contained in:
Jens Reinemann 2026-05-17 15:39:12 +02:00
parent 5434c00f20
commit bba4ac0086

View file

@ -28,7 +28,7 @@ $RemoteDir = "/opt/krisenvorrat"
Write-Host "=== Publish APK v$VersionName (build $VersionCode) ===" -ForegroundColor Cyan Write-Host "=== Publish APK v$VersionName (build $VersionCode) ===" -ForegroundColor Cyan
if (-not (Test-Path $ApkPath)) { if (-not (Test-Path $ApkPath)) {
Write-Error "APK nicht gefunden: $ApkPath bitte zuerst './gradlew assembleDebug' ausfuehren." Write-Error "APK nicht gefunden: $ApkPath - bitte zuerst './gradlew assembleDebug' ausfuehren."
exit 1 exit 1
} }
@ -50,23 +50,28 @@ Write-Host "[OK] APK hochgeladen" -ForegroundColor Green
# --- Schritt 2: Version in docker-compose.yml aktualisieren --- # --- Schritt 2: Version in docker-compose.yml aktualisieren ---
Write-Host "`n[2/4] Version in docker-compose.yml aktualisieren..." -ForegroundColor Yellow Write-Host "`n[2/4] Version in docker-compose.yml aktualisieren..." -ForegroundColor Yellow
# Prüfen ob Env-Vars bereits vorhanden sind # Prüfen ob Env-Vars bereits vorhanden sind (bash-Syntax in einfachen Anführungszeichen)
$hasVersionCode = ssh $VPS "grep -c 'KRISENVORRAT_APP_VERSION_CODE' $RemoteDir/docker-compose.yml 2>/dev/null || echo 0" $checkCmd = 'grep -c "KRISENVORRAT_APP_VERSION_CODE" ' + $RemoteDir + '/docker-compose.yml 2>/dev/null || echo 0'
$hasVersionCode = [int]$hasVersionCode.Trim() $checkResult = ssh $VPS $checkCmd
# SSH kann Array zurückgeben (z.B. Banner + Ergebnis) - letzte Zeile nehmen
if ($checkResult -is [array]) { $checkResult = $checkResult[-1] }
$hasVersionCode = [int]($checkResult.Trim())
if ($hasVersionCode -gt 0) { if ($hasVersionCode -gt 0) {
# Update bestehende Einträge # Update bestehende Einträge
ssh $VPS "cd $RemoteDir && sed -i 's/KRISENVORRAT_APP_VERSION_CODE=.*/KRISENVORRAT_APP_VERSION_CODE=$VersionCode/' docker-compose.yml && sed -i 's/KRISENVORRAT_APP_VERSION_NAME=.*/KRISENVORRAT_APP_VERSION_NAME=$VersionName/' docker-compose.yml" $sedCmd = "cd $RemoteDir; sed -i 's/KRISENVORRAT_APP_VERSION_CODE=.*/KRISENVORRAT_APP_VERSION_CODE=$VersionCode/' docker-compose.yml; sed -i 's/KRISENVORRAT_APP_VERSION_NAME=.*/KRISENVORRAT_APP_VERSION_NAME=$VersionName/' docker-compose.yml"
ssh $VPS $sedCmd
} else { } else {
# Erstmalig hinzufügen (nach JWT_SECRET-Zeile) # Erstmalig hinzufügen (nach JWT_SECRET-Zeile)
ssh $VPS "cd $RemoteDir && sed -i '/KRISENVORRAT_JWT_SECRET/a\ - KRISENVORRAT_APP_VERSION_CODE=$VersionCode\n - KRISENVORRAT_APP_VERSION_NAME=$VersionName' docker-compose.yml" $addCmd = "cd $RemoteDir; sed -i '/KRISENVORRAT_JWT_SECRET/a\ - KRISENVORRAT_APP_VERSION_CODE=$VersionCode' docker-compose.yml; sed -i '/KRISENVORRAT_APP_VERSION_CODE/a\ - KRISENVORRAT_APP_VERSION_NAME=$VersionName' docker-compose.yml"
ssh $VPS $addCmd
} }
if ($LASTEXITCODE -ne 0) { Write-Error "Version-Update fehlgeschlagen."; exit 1 } if ($LASTEXITCODE -ne 0) { Write-Error "Version-Update fehlgeschlagen."; exit 1 }
Write-Host "[OK] Version gesetzt: $VersionName (build $VersionCode)" -ForegroundColor Green Write-Host "[OK] Version gesetzt: $VersionName (build $VersionCode)" -ForegroundColor Green
# --- Schritt 3: Server neustarten --- # --- Schritt 3: Server neustarten ---
Write-Host "`n[3/4] Server-Container neustarten..." -ForegroundColor Yellow Write-Host "`n[3/4] Server-Container neustarten..." -ForegroundColor Yellow
ssh $VPS "cd $RemoteDir && docker compose up -d" ssh $VPS "cd $RemoteDir; docker compose up -d"
if ($LASTEXITCODE -ne 0) { Write-Error "Container-Neustart fehlgeschlagen."; exit 1 } if ($LASTEXITCODE -ne 0) { Write-Error "Container-Neustart fehlgeschlagen."; exit 1 }
Write-Host "[OK] Container neu gestartet" -ForegroundColor Green Write-Host "[OK] Container neu gestartet" -ForegroundColor Green
@ -83,9 +88,9 @@ if ($SkipVerify) {
if ($versionJson.versionCode -eq $VersionCode -and $versionJson.versionName -eq $VersionName) { if ($versionJson.versionCode -eq $VersionCode -and $versionJson.versionName -eq $VersionName) {
Write-Host "[OK] Server meldet Version $($versionJson.versionName) (build $($versionJson.versionCode))" -ForegroundColor Green Write-Host "[OK] Server meldet Version $($versionJson.versionName) (build $($versionJson.versionCode))" -ForegroundColor Green
Write-Host " APK-URL: $($versionJson.apkUrl)" -ForegroundColor DarkGray Write-Host (" APK-URL: " + $versionJson.apkUrl) -ForegroundColor DarkGray
} else { } else {
Write-Warning "Server meldet unerwartete Version: $($versionJson | ConvertTo-Json -Compress)" Write-Warning ("Server meldet unerwartete Version: " + ($versionJson | ConvertTo-Json -Compress))
} }
} catch { } catch {
Write-Warning "Verifizierung fehlgeschlagen: $_" Write-Warning "Verifizierung fehlgeschlagen: $_"