43 lines
1.2 KiB
YAML
43 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 }}
|
|
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 --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)"
|