Files
esports/.github/workflows/deploy.yml

44 lines
1.5 KiB
YAML

name: Deploy
on:
push:
branches: [staging, prod]
jobs:
deploy:
name: Deploy to ${{ github.ref_name }}
runs-on: ubuntu-latest
environment: ${{ github.ref_name == 'prod' && 'production' || 'staging' }}
concurrency:
group: deploy-${{ github.ref_name }}
cancel-in-progress: false
steps:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
key: ${{ secrets.DEPLOY_SSH_KEY }}
script: |
set -euo pipefail
if [ "${{ github.ref_name }}" = "prod" ]; then
cd /opt/esports
git fetch origin prod
git checkout prod
git reset --hard origin/prod
docker compose build
docker compose up -d --wait
docker compose exec app bunx drizzle-kit push --force
else
cd /opt/esports-staging
git fetch origin staging
git checkout staging
git reset --hard origin/staging
docker compose -f docker-compose.staging.yml --env-file .env.staging -p esports-staging build
docker compose -f docker-compose.staging.yml --env-file .env.staging -p esports-staging up -d --wait
docker compose -f docker-compose.staging.yml --env-file .env.staging -p esports-staging exec staging-app bunx drizzle-kit push --force
fi