because I got bored of customising my CV for every job
at main 58 lines 1.6 kB view raw
1#!/usr/bin/env bash 2set -euo pipefail 3 4# Deploy CV Generator to production 5# Run from the repo root: ci/deploy.sh 6 7SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 8REPO_DIR="$(dirname "$SCRIPT_DIR")" 9ENV_FILE="$REPO_DIR/.env.prod" 10COMPOSE_FILE="$REPO_DIR/docker-compose.prod.yml" 11 12cd "$REPO_DIR" 13 14if [ ! -f "$ENV_FILE" ]; then 15 echo "Error: $ENV_FILE not found. Copy ci/.env.prod.example to .env.prod and configure it." 16 exit 1 17fi 18 19# Export env vars for Caddy / compose 20set -a 21source "$ENV_FILE" 22set +a 23 24echo "==> Pulling latest code" 25git pull --ff-only 26 27echo "==> Rebuilding project-q (if needed)" 28if [ -d "$PROJECT_Q_PATH" ]; then 29 (cd "$PROJECT_Q_PATH" && git pull --ff-only && npm install && npm run build) 30else 31 echo "Warning: PROJECT_Q_PATH=$PROJECT_Q_PATH not found. Build may fail." 32fi 33 34echo "==> Regenerating Docker manifests" 35sh .docker/copy-manifests.sh 36 37echo "==> Building images" 38docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" build 39 40echo "==> Running database migrations" 41docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" run --rm server \ 42 sh -c "cd /app/apps/server && npx prisma migrate deploy" 43 44echo "==> Starting services" 45docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up -d 46 47echo "==> Seeding database (idempotent)" 48docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" exec server \ 49 node dist/scripts/seed.js 50 51echo "==> Cleaning up old images" 52docker image prune -f 53 54echo "" 55echo "==> Deploy complete!" 56docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" ps 57echo "" 58echo "Run 'docker compose -f $COMPOSE_FILE --env-file $ENV_FILE logs -f' to watch logs"