58 lines
2.0 KiB
Bash
58 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
||
# Hinterstein Mieterportal – Deploy auf hocks.eu (Workflow aus dem Schulportal)
|
||
#
|
||
# 0. Anleitungs-Stand aktualisieren (Hash + Datum der ausgelieferten Version)
|
||
# 1. npm run build 2. Paket (dist + compose + nginx + server) hochladen
|
||
# 3. Entpacken nach /opt/mieterportal, Container bauen & ersetzen
|
||
# 4. Status prüfen (Container, Portal-Hash, API-Health)
|
||
#
|
||
# Voraussetzungen: Pageant mit priv_ionos_hocks_vps.ppk läuft,
|
||
# portal.env liegt auf dem Server (/opt/mieterportal/portal.env).
|
||
# Aufruf: ./deploy.sh
|
||
set -euo pipefail
|
||
|
||
SERVER="root@hocks.eu"
|
||
PORT=38592
|
||
HOSTKEY="SHA256:4G3UxsugNkHH6BrPXScLXh+vX8P1sLgWKn8cZBKSRxw"
|
||
KEY="Z:\Devel\ssh\priv_ionos_hocks_vps.ppk"
|
||
PSCP="/c/Program Files/PuTTY/pscp.exe"
|
||
PLINK="/c/Program Files/PuTTY/plink.exe"
|
||
REMOTE_DIR="/opt/mieterportal"
|
||
|
||
echo "==> 1/5 Anleitungs-Stand aktualisieren"
|
||
node scripts/anleitung-meta.mjs
|
||
|
||
echo "==> 2/5 Frontend bauen"
|
||
npm run build
|
||
|
||
echo "==> 3/5 Paket erstellen und hochladen"
|
||
rm -rf tmp-deploy && mkdir -p tmp-deploy/docker/templates
|
||
cp -r dist tmp-deploy/dist
|
||
cp docker-compose.yml tmp-deploy/
|
||
cp docker/templates/default.conf.template tmp-deploy/docker/templates/
|
||
cp -r server tmp-deploy/server
|
||
rm -rf tmp-deploy/server/node_modules
|
||
tar -czf mp-dist.tar.gz -C tmp-deploy .
|
||
rm -rf tmp-deploy
|
||
"$PSCP" -batch -hostkey "$HOSTKEY" -i "$KEY" -P "$PORT" \
|
||
mp-dist.tar.gz "$SERVER":/tmp/mp-dist.tar.gz
|
||
rm -f mp-dist.tar.gz
|
||
|
||
echo "==> 4/5 Auf Server entpacken, API-Image bauen, Stack ersetzen"
|
||
"$PLINK" -batch -hostkey "$HOSTKEY" -i "$KEY" -P "$PORT" "$SERVER" "
|
||
mkdir -p $REMOTE_DIR &&
|
||
tar -xzf /tmp/mp-dist.tar.gz -C $REMOTE_DIR &&
|
||
rm -f /tmp/mp-dist.tar.gz &&
|
||
cd $REMOTE_DIR && docker compose up -d --build
|
||
"
|
||
|
||
echo "==> 5/5 Status prüfen"
|
||
sleep 5
|
||
"$PLINK" -batch -hostkey "$HOSTKEY" -i "$KEY" -P "$PORT" "$SERVER" "
|
||
docker ps --filter name=mp- --format 'table {{.Names}}\t{{.Status}}' &&
|
||
curl -s https://mieterportal.hocks.eu/ | grep -o 'index-[^\"]*\.js' | head -1 &&
|
||
curl -s https://mieterportal.hocks.eu/api/healthz
|
||
"
|
||
echo
|
||
echo "Fertig: https://mieterportal.hocks.eu"
|