Axil_Accountants/.github/workflows/deploy.yml
Vadym Samoilenko 1ba1349607 fix: use programmatic migrate script instead of pnpm payload migrate
pnpm payload migrate exits 1 in the migrator container likely due to TLA
issues with Lexical packages (same issue seen with migrate:create).

Replace with a small src/scripts/migrate.ts that calls payload.db.migrate()
programmatically, using the same NODE_OPTIONS approach that works for seed.ts:
  NODE_OPTIONS="--experimental-strip-types --no-require-module"

Also add migrator log output to the CD workflow for easier debugging.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:37:29 +00:00

50 lines
1.5 KiB
YAML

name: Deploy to production
on:
push:
branches:
- main
jobs:
deploy:
name: SSH deploy to VPS
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1.2.0
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: 1220
script_stop: true
script: |
set -euo pipefail
PROJECT_DIR="/opt/03-business/Axil"
COMPOSE_FILE="$PROJECT_DIR/docker-compose.prod.yml"
ENV_FILE="$PROJECT_DIR/.env.production"
echo "▶ Pulling latest code..."
git -C "$PROJECT_DIR" fetch --all
git -C "$PROJECT_DIR" reset --hard origin/main
echo "▶ Building Docker image..."
docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" build
echo "▶ Restarting containers..."
docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up -d --remove-orphans || {
echo "✗ Startup failed — migrator logs:"
docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" logs migrator
exit 1
}
echo "▶ Migrator logs:"
docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" logs migrator
echo "▶ Pruning unused images..."
docker image prune -f
echo "✓ Deploy complete — $(git -C "$PROJECT_DIR" rev-parse --short HEAD)"