add cicd
This commit is contained in:
44
.github/workflows/deploy.yml
vendored
Normal file
44
.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
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_stop: true
|
||||
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
|
||||
docker compose exec app bun run db:push
|
||||
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
|
||||
docker compose -f docker-compose.staging.yml --env-file .env.staging -p esports-staging exec staging-app bun run db:push
|
||||
fi
|
||||
Reference in New Issue
Block a user