59 lines
1.8 KiB
Bash
Executable File
59 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PROJECT_DIR="${PROJECT_DIR:-$(pwd)}"
|
|
DEPLOY_BRANCH="${DEPLOY_BRANCH:-main}"
|
|
STORE_PORT="${STORE_PORT:-3001}"
|
|
API_PORT="${API_PORT:-8080}"
|
|
|
|
cd "$PROJECT_DIR"
|
|
|
|
echo "[deploy] Updating repository to origin/${DEPLOY_BRANCH}"
|
|
git fetch origin "$DEPLOY_BRANCH"
|
|
git checkout "$DEPLOY_BRANCH"
|
|
git reset --hard "origin/$DEPLOY_BRANCH"
|
|
|
|
echo "[deploy] Ensuring pnpm is available"
|
|
corepack enable
|
|
corepack prepare pnpm@10.16.1 --activate
|
|
|
|
echo "[deploy] Installing dependencies"
|
|
pnpm install --frozen-lockfile
|
|
|
|
echo "[deploy] Running checks"
|
|
pnpm typecheck
|
|
pnpm build
|
|
|
|
if [[ -n "${DATABASE_URL:-}" ]]; then
|
|
echo "[deploy] Applying Drizzle schema to external PostgreSQL/Supabase"
|
|
pnpm --filter @workspace/db run push
|
|
else
|
|
echo "[deploy] DATABASE_URL is missing; skipping DB schema push"
|
|
fi
|
|
|
|
echo "[deploy] Restarting storefront"
|
|
if pm2 describe extra-store >/dev/null 2>&1; then
|
|
PORT="$STORE_PORT" pm2 restart extra-store --update-env
|
|
else
|
|
PORT="$STORE_PORT" pm2 start pnpm --name extra-store --interpreter bash -- -lc "pnpm --filter @workspace/extra-store run dev"
|
|
fi
|
|
|
|
if [[ -n "${DATABASE_URL:-}" && -n "${ADMIN_TOKEN:-}" && -n "${API_INGEST_KEY:-}" ]]; then
|
|
echo "[deploy] Restarting API backend"
|
|
if pm2 describe flatlogic-api >/dev/null 2>&1; then
|
|
PORT="$API_PORT" NODE_ENV=production pm2 restart flatlogic-api --update-env
|
|
else
|
|
PORT="$API_PORT" NODE_ENV=production pm2 start pnpm --name flatlogic-api --interpreter bash -- -lc "pnpm --filter @workspace/api-server run start"
|
|
fi
|
|
else
|
|
echo "[deploy] API secrets are incomplete; skipping API process start"
|
|
fi
|
|
|
|
echo "[deploy] Health checks"
|
|
curl -fsS "http://127.0.0.1:${STORE_PORT}/" >/dev/null
|
|
if pm2 describe flatlogic-api >/dev/null 2>&1; then
|
|
curl -fsS "http://127.0.0.1:${API_PORT}/api/healthz" >/dev/null
|
|
fi
|
|
|
|
echo "[deploy] Done"
|