Skip to content

Merge pull request #14 from SynergyX-AI-Pattern/bug/#9_deploy_error #6

Merge pull request #14 from SynergyX-AI-Pattern/bug/#9_deploy_error

Merge pull request #14 from SynergyX-AI-Pattern/bug/#9_deploy_error #6

name: FastAPI dev CI/CD
on:
push:
branches: [ develop ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout FastAPI Repo
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
- name: Decode .env file
run: |
echo "$ENV_BASE64" | base64 -d > .env
env:
ENV_BASE64: ${{ secrets.FASTAPI_ENV_BASE64 }}
- name: Deploy to EC2
env:
EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }}
EC2_USERNAME: ${{ secrets.EC2_USERNAME }}
EC2_HOST: ${{ secrets.EC2_HOST }}
run: |
echo "$EC2_SSH_KEY" > private_key.pem
chmod 600 private_key.pem
# 프로젝트 코드 전송
rsync -avz -e "ssh -i private_key.pem -o StrictHostKeyChecking=no" \
--exclude venv --exclude .git ./ $EC2_USERNAME@$EC2_HOST:/home/$EC2_USERNAME/fastapi-app/
# .env 파일 전송
scp -i private_key.pem -o StrictHostKeyChecking=no .env $EC2_USERNAME@$EC2_HOST:/home/$EC2_USERNAME/fastapi-app/.env
# 서버 실행 스크립트
ssh -i private_key.pem -o StrictHostKeyChecking=no $EC2_USERNAME@$EC2_HOST "
set -e
cd /home/$EC2_USERNAME/fastapi-app
# Python venv 설치
echo '[INFO] python3.10-venv 설치 보장 중...'
sudo apt update
sudo apt install -y python3.10-venv python3-pip
# 가상환경 + 패키지 설치
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
# fast api 서버 재시작
pkill -f 'uvicorn' || true
export PYTHONPATH=$(pwd)
nohup venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000 > fastapi.log 2>&1 &
"
rm -f private_key.pem