From d8d558f7e375720ac75b1814640b718d4b9dc424 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 8 May 2026 21:53:28 +0200 Subject: [PATCH] Prod deploy script --- deploy.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 deploy.sh diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..20eb713 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -euo pipefail + +# --- Farben --- +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +info() { echo -e "${GREEN}[INFO]${NC} $1"; } +warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } +error() { echo -e "${RED}[ERROR]${NC} $1" >&2; } + +# --- Konfiguration --- +PROJECT_DIR="/srv/danielnagel-site" +VENV_DIR="${PROJECT_DIR}/.venv" +PUBLISH_CONF="publishconf.py" +OUTPUT_DIR="${PROJECT_DIR}/output" + +# --- Sicherheits-Check: richtiges Verzeichnis --- +cd "$PROJECT_DIR" + +if [ ! -f "$PUBLISH_CONF" ]; then + error "publishconf.py nicht gefunden. Falsches Verzeichnis?" + exit 1 +fi + +if [ ! -d "$VENV_DIR" ]; then + error "venv fehlt. Bitte erst setup.sh ausführen." + exit 1 +fi + +# --- 1. Git-Update --- +info "Hole aktuellen Stand vom Repo..." +git fetch --all --prune +git reset --hard origin/main +git submodule update --init --recursive --force + +# --- 2. Dependencies refreshen --- +info "Aktualisiere Python-Dependencies..." +"${VENV_DIR}/bin/pip" install --quiet --upgrade pip +"${VENV_DIR}/bin/pip" install --quiet -r requirements.txt + +# --- 3. Pelican bauen --- +info "Baue Site mit Pelican (Production-Config)..." +"${VENV_DIR}/bin/pelican" content \ + -s "$PUBLISH_CONF" \ + --delete-output-directory + +info "Build fertig. Output liegt in: ${OUTPUT_DIR}" + +# --- 4. Sanity-Check --- +if [ ! -f "${OUTPUT_DIR}/index.html" ]; then + error "index.html fehlt im Output! Build evtl. fehlgeschlagen." + exit 1 +fi + +# --- Done --- +info "Deploy erfolgreich. Caddy serviert die neuen Files automatisch. 🚀"