Skip to content

Merge pull request #34 from SynergyX-AI-Pattern/refactor/#33_update_p… #20

Merge pull request #34 from SynergyX-AI-Pattern/refactor/#33_update_p…

Merge pull request #34 from SynergyX-AI-Pattern/refactor/#33_update_p… #20

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: Decode Vision key
run: |
echo "$VISION_KEY_JSON_BASE64" | base64 -d > vision-key.json
env:
VISION_KEY_JSON_BASE64: ${{ secrets.VISION_KEY_JSON_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
# Vision key 전송
scp -i private_key.pem -o StrictHostKeyChecking=no vision-key.json $EC2_USERNAME@$EC2_HOST:/home/$EC2_USERNAME/fastapi-app/vision-key.json
# 서버 설정 및 재시작
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
# systemd 서비스 재시작
echo '[INFO] FastAPI 서비스 재시작...'
sudo systemctl daemon-reload
sudo systemctl restart fastapi
sudo systemctl status fastapi --no-pager -l
"
rm -f private_key.pem