Axil_website/.github/workflows/deploy.yml
Vadym Samoilenko 4958a6afc2 ci: add GitHub Actions CD workflow for auto-deploy to VPS
On push to main: SSH into server, git pull, docker compose build + up.
Uses SSH_HOST / SSH_USER / SSH_PRIVATE_KEY repo secrets.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 18:20:36 +00:00

42 lines
1.2 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 }}
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 --pull
echo "▶ Restarting containers..."
docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up -d --remove-orphans
echo "▶ Pruning unused images..."
docker image prune -f
echo "✓ Deploy complete — $(git -C "$PROJECT_DIR" rev-parse --short HEAD)"