0832ef777c
Ampel / ampel (push) Successful in 27s
Aus dem Weitergabe-Review. Kein Verhaltenswechsel fuer den Ursprungs-Host (alle Defaults = bisheriges Verhalten): Portabilitaet: - Laufwerk-Geraeteknoten via .env parametrisiert (OPTICAL_SR/OPTICAL_SG, Defaults sr0/sg1) - der #1-Blocker: auf Fremdhosts liegt das sg-Node woanders. - deploy.sh generisch (RIPPY_VM/RIPPY_REPO_URL/... aus der Umgebung) - keine festen Besitzer-Adressen (interne IP + DDNS) mehr im Repo. - POSTGRES_PASSWORD in compose durchverdrahtet (Default rippy) - war No-op. Aufraeumen (toter/irrefuehrender Code): - udev/ entfernt (fehlende Regeldatei, falscher Container-Name; durch ioctl- Polling ersetzt - reine Altlast). - docker/postgres/*, docker/redis/*, init.sql entfernt (nie eingebunden). Onboarding: - FirstRunWizard verdrahtet: App.tsx fragt GET /setup und zeigt den Einrichtungs-Assistenten beim ersten Start (war gebaut, aber nie gerendert). Doku: - README: Laufwerk-Abschnitt auf .env, ENV-Tabelle (OPTICAL_*/POSTGRES), rshared-Anleitung, neuer Abschnitt "Haertung fuer fremde/exponierte Netze". - config_validation.py: TMDB Pflicht->empfohlen, Zeichensalat-Tippfehler gefixt. - .env.example: TMDB-Wording, OPTICAL_*-Variablen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
2.1 KiB
Bash
49 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
# Deploy fuer Rippy — deployt den aktuellen 'main'-Stand auf die Ziel-VM.
|
|
# Single Source of Truth ist 'main' (kein stable-Branch); die Ampel prueft nur,
|
|
# befoerdert nichts. Vor dem Deploy selbst sicherstellen, dass die Ampel fuer den
|
|
# zu deployenden Commit GRUEN ist.
|
|
#
|
|
# Generisch/portabel: Ziel-Host, Repo-URL und .env-Pfad kommen aus der Umgebung —
|
|
# KEINE festen Adressen im Repo. Fuer eine Erst-Installation auf einem eigenen Host
|
|
# reicht ohnehin der einfache Weg (siehe README):
|
|
# git clone <repo> && cd rippy && cp .env.example .env (Werte eintragen)
|
|
# docker compose up -d --build
|
|
#
|
|
# Dieses Skript ist nur die bequeme Remote-Variante: es SSHt zur VM, nutzt dort
|
|
# einen EIGENEN Klon (Default ~/notfall-rippy) und fasst ein evtl. vorhandenes
|
|
# Projektverzeichnis NIE an (git-Klon dort kollidiert mit dessen Sync). Die .env
|
|
# gehoert der VM und wird nur GELESEN (fuer compose-Interpolation).
|
|
#
|
|
# Konfiguration ueber Umgebungsvariablen:
|
|
# RIPPY_VM Ziel-Host fuer ssh, z.B. user@10.0.0.5 (PFLICHT)
|
|
# RIPPY_REPO_URL Git-Repo-URL (branch main) (PFLICHT)
|
|
# RIPPY_ENV_SRC Pfad zur .env auf der VM (Default: ~/rippy/.env)
|
|
# RIPPY_CLONE Arbeits-Klon auf der VM (Default: ~/notfall-rippy)
|
|
# Optionales Argument $1: nur einen Dienst neu bauen, z.B. ./deploy.sh api
|
|
set -euo pipefail
|
|
|
|
VM="${RIPPY_VM:?RIPPY_VM setzen, z.B. RIPPY_VM=user@10.0.0.5}"
|
|
REPO_URL="${RIPPY_REPO_URL:?RIPPY_REPO_URL setzen (Git-URL des Rippy-Repos)}"
|
|
ENV_SRC="${RIPPY_ENV_SRC:-}" # leer -> Remote-Default ~/rippy/.env
|
|
CLONE="${RIPPY_CLONE:-}" # leer -> Remote-Default ~/notfall-rippy
|
|
DIENST="${1:-}"
|
|
|
|
ssh "$VM" bash -s -- "$REPO_URL" "$ENV_SRC" "$CLONE" "$DIENST" <<'REMOTE'
|
|
set -euo pipefail
|
|
REPO_URL="$1"
|
|
ENV_SRC="${2:-$HOME/rippy/.env}"
|
|
CLONE="${3:-$HOME/notfall-rippy}"
|
|
DIENST="$4"
|
|
|
|
if [ ! -d "$CLONE/.git" ]; then
|
|
git clone --branch main "$REPO_URL" "$CLONE"
|
|
fi
|
|
cd "$CLONE"
|
|
git fetch origin main
|
|
git reset --hard origin/main
|
|
cp "$ENV_SRC" .env 2>/dev/null || echo "WARNUNG: keine .env unter $ENV_SRC gefunden"
|
|
docker compose -p rippy up -d --build $DIENST
|
|
docker compose -p rippy ps --format 'table {{.Name}}\t{{.Status}}'
|
|
REMOTE
|