Merge pull request #34 from SynergyX-AI-Pattern/refactor/#33_update_p… #20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | |