All checks were successful
Deploy / deploy (push) Successful in 49s
- German (default) and English i18n support - Categories and tags - Blog posts with hero images - Dark/light theme switcher - View Transitions removed to fix reload ghost images - Webmentions integration - RSS feeds per locale Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
62 lines
No EOL
1.9 KiB
Bash
Executable file
62 lines
No EOL
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
VAULT_CONTENT='/Users/adrian/Library/Mobile Documents/iCloud~md~obsidian/Documents/03 Bereiche/Webseite/adrian-altner-de/content'
|
|
VPS="${1:-hetzner}"
|
|
REMOTE_BRANCH="${2:-main}"
|
|
|
|
REMOTE_BASE='/opt/websites/adrian-altner.de'
|
|
REMOTE_CONTENT="${REMOTE_BASE}/src/content"
|
|
|
|
# --- 1. Sync vault to VPS ---
|
|
ssh "$VPS" "
|
|
set -euo pipefail
|
|
cd '$REMOTE_BASE'
|
|
git fetch --prune origin '$REMOTE_BRANCH'
|
|
git checkout '$REMOTE_BRANCH'
|
|
git reset --hard 'origin/$REMOTE_BRANCH'
|
|
git clean -fd -e .env -e .env.production
|
|
mkdir -p '$REMOTE_CONTENT'
|
|
"
|
|
|
|
rsync -az --delete \
|
|
--include='*/' \
|
|
--include='*.md' \
|
|
--include='*.mdx' \
|
|
--include='*.jpg' \
|
|
--include='*.jpeg' \
|
|
--include='*.png' \
|
|
--include='*.PNG' \
|
|
--include='*.JPG' \
|
|
--include='*.JPEG' \
|
|
--include='*.json' \
|
|
--exclude='.DS_Store' \
|
|
--exclude='*' \
|
|
"$VAULT_CONTENT/" "$VPS:$REMOTE_CONTENT/"
|
|
|
|
# --- 2. Build + cleanup ---
|
|
ssh "$VPS" "
|
|
set -euo pipefail
|
|
cd '$REMOTE_BASE'
|
|
sudo podman build -t localhost/adrian-altner.de:latest .
|
|
sudo systemctl restart podman-compose@adrian-altner.de.service
|
|
sudo podman container prune -f 2>/dev/null || true
|
|
sudo podman image prune --external -f 2>/dev/null || true
|
|
sudo podman image prune -f 2>/dev/null || true
|
|
sudo podman builder prune -af 2>/dev/null || true
|
|
"
|
|
|
|
echo "Redeploy done via $VPS (branch: $REMOTE_BRANCH)."
|
|
|
|
# --- 3. Webmentions ---
|
|
WEBMENTION_APP_TOKEN="$(ssh "$VPS" "grep '^WEBMENTION_APP_TOKEN=' '$REMOTE_BASE/.env.production' | cut -d= -f2-" 2>/dev/null || true)"
|
|
if [[ -n "$WEBMENTION_APP_TOKEN" ]]; then
|
|
echo "Sending webmentions via webmention.app..."
|
|
for feed in rss/blog.xml rss/fotos.xml; do
|
|
curl -s -X POST "https://webmention.app/check?url=https://adrian-altner.de/${feed}&token=${WEBMENTION_APP_TOKEN}" \
|
|
| grep -o '"status":"[^"]*"' || true
|
|
done
|
|
echo "Webmentions triggered."
|
|
else
|
|
echo "No WEBMENTION_APP_TOKEN in .env.production — skipping webmentions."
|
|
fi |