49 lines
1.3 KiB
Bash
Executable file
49 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Usage: publish-projects.sh [vps-host] [branch]
|
|
# Can be called from any directory — no dependency on the repo being the working dir.
|
|
set -euo pipefail
|
|
|
|
VAULT_PROJECTS='/Users/adrian/Obsidian/Web/adrian-altner-com/content/projects'
|
|
VPS="${1:-hetzner}"
|
|
REMOTE_BRANCH="${2:-main}"
|
|
|
|
REMOTE_BASE='/opt/websites/www.adrian-altner.com'
|
|
REMOTE_PROJECTS="${REMOTE_BASE}/src/content/projects"
|
|
|
|
# --- 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_PROJECTS'
|
|
"
|
|
|
|
rsync -az --delete \
|
|
--include='*/' \
|
|
--include='*.md' \
|
|
--include='*.mdx' \
|
|
--include='*.jpg' \
|
|
--include='*.jpeg' \
|
|
--include='*.JPG' \
|
|
--include='*.JPEG' \
|
|
--include='*.png' \
|
|
--include='*.PNG' \
|
|
--include='*.webp' \
|
|
--include='*.gif' \
|
|
--exclude='.DS_Store' \
|
|
--exclude='*' \
|
|
"$VAULT_PROJECTS/" "$VPS:$REMOTE_PROJECTS/"
|
|
|
|
# --- 2. Build + cleanup ---
|
|
ssh "$VPS" "
|
|
set -euo pipefail
|
|
cd '$REMOTE_BASE'
|
|
podman-compose -f compose.yml up --build -d --force-recreate
|
|
podman image prune -af
|
|
podman builder prune -af
|
|
"
|
|
|
|
echo "Projects deploy done via $VPS (branch: $REMOTE_BRANCH)."
|