This commit is contained in:
1 parent
fe2bae803b
commit
f98785b26a
1 file changed
+63
+63
@@ -0,0 +1,63 @@
|
|||||||
|
# Baut die Seite lokal und lädt sie auf den Webserver.
|
||||||
|
# Ersetzt den Gitea-Workflow (.gitea/workflows/deploy.yml) für manuelle Deploys.
|
||||||
|
#
|
||||||
|
# .\deploy.ps1 # bauen und hochladen
|
||||||
|
# .\deploy.ps1 -DryRun # nur bauen und packen, nichts hochladen
|
||||||
|
# .\deploy.ps1 -Key C:\pfad\zum\key # bestimmten SSH-Key verwenden
|
||||||
|
# # (Standard: ~\.ssh\deepwater_deploy, falls vorhanden)
|
||||||
|
|
||||||
|
param(
|
||||||
|
[string]$Server = "webserver.hahmann-trier.local",
|
||||||
|
[int]$Port = 8147,
|
||||||
|
[string]$User = "gitea-deploy",
|
||||||
|
[string]$Target = "/var/www/www-deepwatersurvival-de",
|
||||||
|
[string]$Key = "",
|
||||||
|
[switch]$DryRun
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
Set-Location $PSScriptRoot
|
||||||
|
|
||||||
|
function Assert-Ok($step) {
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "$step fehlgeschlagen (Exit-Code $LASTEXITCODE)" }
|
||||||
|
}
|
||||||
|
|
||||||
|
$defaultKey = Join-Path $HOME ".ssh\deepwater_deploy"
|
||||||
|
if (-not $Key -and (Test-Path $defaultKey)) { $Key = $defaultKey }
|
||||||
|
|
||||||
|
$sshOpts = @("-o", "StrictHostKeyChecking=accept-new")
|
||||||
|
if ($Key) { $sshOpts += @("-i", $Key) }
|
||||||
|
|
||||||
|
Write-Host "1/4 Baue Seite mit Hugo ..."
|
||||||
|
hugo --minify --cleanDestinationDir
|
||||||
|
Assert-Ok "Hugo-Build"
|
||||||
|
|
||||||
|
Write-Host "2/4 Packe public/ ..."
|
||||||
|
$archive = Join-Path $env:TEMP "deepwatersurvival-site.tgz"
|
||||||
|
& "$env:SystemRoot\System32\tar.exe" -czf $archive -C public .
|
||||||
|
Assert-Ok "Packen"
|
||||||
|
Write-Host (" {0:N1} MB" -f ((Get-Item $archive).Length / 1MB))
|
||||||
|
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host "DryRun: nichts hochgeladen. Archiv liegt unter $archive"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
$stamp = Get-Date -Format "yyyyMMddHHmmss"
|
||||||
|
$remoteDir = "/tmp/deepwatersurvival-$stamp"
|
||||||
|
$remote = "$User@$Server"
|
||||||
|
|
||||||
|
Write-Host "3/4 Lade hoch nach $remote ..."
|
||||||
|
scp -P $Port @sshOpts $archive "${remote}:$remoteDir.tgz"
|
||||||
|
Assert-Ok "Upload"
|
||||||
|
|
||||||
|
Write-Host "4/4 Entpacke und gleiche $Target ab ..."
|
||||||
|
# rsync --delete entfernt auf dem Server Dateien, die es lokal nicht mehr gibt (wie im Workflow).
|
||||||
|
$remoteCmd = "set -e; mkdir -p $remoteDir; tar -xzf $remoteDir.tgz -C $remoteDir; " +
|
||||||
|
"rsync -rt --delete --chmod=D755,F644 $remoteDir/ $Target/; " +
|
||||||
|
"rm -rf $remoteDir $remoteDir.tgz"
|
||||||
|
ssh -p $Port @sshOpts $remote $remoteCmd
|
||||||
|
Assert-Ok "Abgleich auf dem Server"
|
||||||
|
|
||||||
|
Remove-Item $archive
|
||||||
|
Write-Host "Fertig: https://www.deepwatersurvival.de/"
|
||||||
Reference in new issue
Block a user