Files
2026-08-05 19:21:11 +07:00

50 lines
1.7 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# Deploy till befintlig server (spec §51, steg 1).
# Körs som den dedikerade app-användaren på servern.
set -euo pipefail
APP_DIR="/opt/${APP_SLUG:-app}-platform"
REPO_DIR="$APP_DIR/repo"
COMPOSE="$REPO_DIR/infrastructure/docker/docker-compose.production.yml"
echo "==> Deploy $(date -Iseconds)"
cd "$REPO_DIR"
git fetch --tags origin main
PREV_SHA=$(git rev-parse HEAD)
git reset --hard origin/main
NEW_SHA=$(git rev-parse HEAD)
echo "==> $PREV_SHA -> $NEW_SHA"
echo "==> Bygger images"
docker compose -f "$COMPOSE" build
echo "==> Kör databas-migrationer (med backup-punkt först)"
# RDS: automatiska snapshots finns; ta även logisk dump för snabb rollback.
mkdir -p "$APP_DIR/backups"
pg_dump "$DATABASE_URL" --format=custom \
--file="$APP_DIR/backups/pre-deploy-$(date +%Y%m%d-%H%M%S).dump" || {
echo "VARNING: pg_dump misslyckades avbryter deploy (spec §63: ingen migration utan backup)"; exit 1;
}
docker run --rm --env-file "$APP_DIR/secrets/api.env" app-api:latest \
node dist/index.js --migrate-only 2>/dev/null || true
# Migrationer körs normalt från CI/lokalt: pnpm db:migrate mot produktion via bastion.
echo "==> Startar om tjänster (rullande)"
docker compose -f "$COMPOSE" up -d app-redis
docker compose -f "$COMPOSE" up -d app-worker
docker compose -f "$COMPOSE" up -d app-api
docker compose -f "$COMPOSE" up -d app-admin
echo "==> Healthcheck"
sleep 5
if ! curl -fsS http://127.0.0.1:4100/healthz > /dev/null; then
echo "FEL: API svarar inte rollback till $PREV_SHA"
git reset --hard "$PREV_SHA"
docker compose -f "$COMPOSE" build app-api
docker compose -f "$COMPOSE" up -d app-api
exit 1
fi
echo "==> Deploy klar: $NEW_SHA"