From e1f7fb14fc7c61d85322cf150f1952f34e7e2497 Mon Sep 17 00:00:00 2001 From: Bashy Date: Thu, 28 May 2026 12:32:28 +0300 Subject: [PATCH] Simplify deploy.sh to run in place on the server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes local/prod cases — script now just does git pull, writes BUILD, and runs migrate wherever it's executed. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 5 ++-- bin/deploy.sh | 82 +++++++++++---------------------------------------- 2 files changed, 20 insertions(+), 67 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 48a0ceb..5becf33 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -110,12 +110,11 @@ Tables in play (beyond core `users`/`projects`/`scan_paths`/`settings`): | Target | Command | What it does | |---------|--------------------------|--------------| | local | `sudo ./deploylocal.sh` | rsync to `/var/www/hackmancms`, chown www-data, migrate, reload Apache (port 8082) | -| local (minimal) | `./bin/deploy.sh local` | rsync to `/var/www/hackmancms`, migrate (no chown/reload) | -| prod | `./bin/deploy.sh prod` | SSH git pull + migrate on `bashy@37.205.12.57:/opt/hackmancms` | +| server | `./bin/deploy.sh` | git pull, write BUILD, migrate — run directly on the server | `deploylocal.sh` is the one to use day-to-day on bashyMint — it sets www-data ownership so the schedules cron and npm/git child processes can write to project paths and to -`data/hackmancms.sqlite`. Plain `./bin/deploy.sh local` exists for parity with prod. +`data/hackmancms.sqlite`. On the server: Apache doc root = `/opt/hackmancms/web`. SQLite at `/opt/hackmancms/data/hackmancms.sqlite`. Web server process needs write access to `/opt/hackmancms/data/`. diff --git a/bin/deploy.sh b/bin/deploy.sh index 45837bc..91461fa 100755 --- a/bin/deploy.sh +++ b/bin/deploy.sh @@ -1,75 +1,29 @@ #!/usr/bin/env bash set -euo pipefail -TARGET="${1:-local}" REPO="$(cd "$(dirname "$0")/.." && pwd)" -write_build_file() { - # $1 = repo dir, $2 = web dir - local repo="$1" webdir="$2" - local vmm vbump bnum version sha branch built - vmm=$(tr -d '[:space:]' < "$repo/VERSION" 2>/dev/null || echo '0.0') - vbump=$(git -C "$repo" log -1 --format=%H -- VERSION 2>/dev/null || echo '') - if [ -n "$vbump" ]; then - bnum=$(git -C "$repo" rev-list --count "${vbump}..HEAD" 2>/dev/null || echo '0') - else - bnum=$(git -C "$repo" rev-list --count HEAD 2>/dev/null || echo '0') - fi - version="${vmm}.${bnum}" - sha=$(git -C "$repo" rev-parse --short HEAD 2>/dev/null || echo 'unknown') - branch=$(git -C "$repo" rev-parse --abbrev-ref HEAD 2>/dev/null || echo 'unknown') - built=$(date '+%Y-%m-%d %H:%M:%S') - cat > "$webdir/BUILD" </dev/null || echo '0.0') +vbump=$(git -C "$REPO" log -1 --format=%H -- VERSION 2>/dev/null || echo '') +if [ -n "$vbump" ]; then + bnum=$(git -C "$REPO" rev-list --count "${vbump}..HEAD" 2>/dev/null || echo '0') +else + bnum=$(git -C "$REPO" rev-list --count HEAD 2>/dev/null || echo '0') +fi +version="${vmm}.${bnum}" +sha=$(git -C "$REPO" rev-parse --short HEAD 2>/dev/null || echo 'unknown') +branch=$(git -C "$REPO" rev-parse --abbrev-ref HEAD 2>/dev/null || echo 'unknown') +built=$(date '+%Y-%m-%d %H:%M:%S') +cat > "$REPO/web/BUILD" </dev/null || echo "0.0") - VBUMP=$(git log -1 --format=%H -- VERSION 2>/dev/null || echo "") - if [ -n "$VBUMP" ]; then - BNUM=$(git rev-list --count "${VBUMP}..HEAD" 2>/dev/null || echo "0") - else - BNUM=$(git rev-list --count HEAD 2>/dev/null || echo "0") - fi - VERSION="${VMM}.${BNUM}" - SHA=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown") - BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown") - BUILT=$(date "+%Y-%m-%d %H:%M:%S") - printf "version=%s\nsha=%s\nbranch=%s\nbuilt=%s\n" "$VERSION" "$SHA" "$BRANCH" "$BUILT" > web/BUILD - echo " BUILD: v$VERSION · $SHA · $BUILT" - php bin/migrate.php - ' - echo "→ done" - ;; - - *) - echo "Usage: $0 [local|prod]" - exit 1 - ;; -esac +php "$REPO/bin/migrate.php" +echo "→ done"