Skip to content

test

test #41

Workflow file for this run

name: Deploy Services
on:
push:
branches:
- release
paths:
- "src/backend/**"
workflow_dispatch:
jobs:
deploy-backend:
name: Build and Deploy Backend
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
- name: Setup Nginx and SSL
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
script: |
if ! command -v nginx &> /dev/null; then
sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx
fi
sudo tee /etc/nginx/sites-available/default << 'EOF'
server {
listen 80;
listen [::]:80;
server_name api-loa-life.duckdns.org;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
EOF
if [ ! -d "/etc/letsencrypt/live/api-loa-life.duckdns.org" ]; then
sudo certbot --nginx -d api-loa-life.duckdns.org --non-interactive --agree-tos --email ${{ secrets.CERTBOT_EMAIL }}
fi
sudo systemctl reload nginx
- name: Build and Deploy Backend
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
script: |
cd /home/ubuntu/loalife
git pull origin release
docker build -t backend-service ./src/backend
docker stop backend-service || true
docker rm backend-service || true
docker run -d \
--name backend-service \
-p 3001:3001 \
-e DATABASE_URL="${{ secrets.DATABASE_URL }}" \
-e GOOGLE_CLIENT_ID="${{ secrets.GOOGLE_CLIENT_ID }}" \
-e GOOGLE_CLIENT_SECRET="${{ secrets.GOOGLE_CLIENT_SECRET }}" \
-e GOOGLE_AUTH_CALLBACK_URL="${{ secrets.GOOGLE_AUTH_CALLBACK_URL }}" \
-e DISCORD_CLIENT_ID="${{ secrets.DISCORD_CLIENT_ID }}" \
-e DISCORD_CLIENT_SECRET="${{ secrets.DISCORD_CLIENT_SECRET }}" \
-e DISCORD_AUTH_CALLBACK_URL="${{ secrets.DISCORD_AUTH_CALLBACK_URL }}" \
-e KAKAO_CLIENT_ID="${{ secrets.KAKAO_CLIENT_ID }}" \
-e KAKAO_CLIENT_SECRET="${{ secrets.KAKAO_CLIENT_SECRET }}" \
-e KAKAO_AUTH_CALLBACK_URL="${{ secrets.KAKAO_AUTH_CALLBACK_URL }}" \
-e AUTH_SUCCESS_URL="${{ secrets.AUTH_SUCCESS_URL }}" \
-e CLIENT_ENDPOINT="${{ secrets.CLIENT_ENDPOINT }}" \
--restart always \
backend-service
- name: Run Database Migrations
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
script: |
cd /home/ubuntu/loalife/src/backend
docker exec backend-service npx prisma migrate deploy --schema=/app/prisma/schema.prisma