Skip to content

배포 v1.11.1

배포 v1.11.1 #90

Workflow file for this run

name: Deploy to EC2 (MLOps)
on:
push:
branches: [main]
paths:
- 'MLOps/**'
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy to EC2
uses: appleboy/[email protected]
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
VECTORDB_PATH: ${{ secrets.VECTORDB_PATH }}
DB_HOST: ${{ secrets.DB_HOST }}
DB_PORT: ${{ secrets.DB_PORT }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_DATABASE: ${{ secrets.DB_DATABASE }}
CLICK_LOG: ${{ secrets.CLICK_LOG }}
DEEPFM_TRAIN_MODEL_PATH: ${{ secrets.DEEPFM_TRAIN_MODEL_PATH }}
DEEPFM_TRAIN_ENCODERS_PATH: ${{ secrets.DEEPFM_TRAIN_ENCODERS_PATH }}
DEEPFM_TRAIN_KEY2INDEX_PATH: ${{ secrets.DEEPFM_TRAIN_KEY2INDEX_PATH }}
SEOUL_API_KEY: ${{ secrets.SEOUL_API_KEY }}
PLACE_PATH: ${{ secrets.PLACE_PATH }}
ONE_HOUR_MODEL_PATH: ${{ secrets.ONE_HOUR_MODEL_PATH }}
TWO_HOUR_MODEL_PATH: ${{ secrets.TWO_HOUR_MODEL_PATH }}
THREE_HOUR_MODEL_PATH: ${{ secrets.THREE_HOUR_MODEL_PATH }}
SIX_HOUR_MODEL_PATH: ${{ secrets.SIX_HOUR_MODEL_PATH }}
TWELVE_HOUR_MODEL_PATH: ${{ secrets.TWELVE_HOUR_MODEL_PATH }}
PRED_PATH: ${{ secrets.PRED_PATH }}
with:
host: ${{ secrets.EC2_HOST_ML }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: 22
envs: OPENAI_API_KEY,VECTORDB_PATH,DB_HOST,DB_PORT,DB_USER,DB_PASSWORD,DB_DATABASE,CLICK_LOG,DEEPFM_TRAIN_MODEL_PATH,DEEPFM_TRAIN_ENCODERS_PATH,DEEPFM_TRAIN_KEY2INDEX_PATH,SEOUL_API_KEY,PLACE_PATH,ONE_HOUR_MODEL_PATH,TWO_HOUR_MODEL_PATH,THREE_HOUR_MODEL_PATH,SIX_HOUR_MODEL_PATH,TWELVE_HOUR_MODEL_PATH,PRED_PATH
script: |
# 프로젝트 디렉터리로 이동
cd ~/MLOps
# 최신 코드 받기
git checkout main
git fetch origin main
git pull origin main --no-rebase
# dvc s3 연결
dvc remote modify --local storage access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
dvc remote modify --local storage secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
dvc pull --force
# MLOps 디렉터리로 이동
cd MLOps
# .env 파일 생성
echo "OPENAI_API_KEY=$OPENAI_API_KEY" > .env
echo "CLICK_LOG=$CLICK_LOG" >> .env
echo "DEEPFM_TRAIN_MODEL_PATH=$DEEPFM_TRAIN_MODEL_PATH" >> .env
echo "DEEPFM_TRAIN_ENCODERS_PATH=$DEEPFM_TRAIN_ENCODERS_PATH" >> .env
echo "DEEPFM_TRAIN_KEY2INDEX_PATH=$DEEPFM_TRAIN_KEY2INDEX_PATH" >> .env
echo "VECTORDB_PATH=$VECTORDB_PATH" >> .env
echo "DB_HOST=$DB_HOST" >> .env
echo "DB_PORT=$DB_PORT" >> .env
echo "DB_USER=$DB_USER" >> .env
echo "DB_PASSWORD=$DB_PASSWORD" >> .env
echo "DB_DATABASE=$DB_DATABASE" >> .env
echo "ONE_HOUR_MODEL_PATH=$ONE_HOUR_MODEL_PATH" >> .env
echo "TWO_HOUR_MODEL_PATH=$TWO_HOUR_MODEL_PATH" >> .env
echo "THREE_HOUR_MODEL_PATH=$THREE_HOUR_MODEL_PATH" >> .env
echo "SIX_HOUR_MODEL_PATH=$SIX_HOUR_MODEL_PATH" >> .env
echo "TWELVE_HOUR_MODEL_PATH=$TWELVE_HOUR_MODEL_PATH" >> .env
echo "SEOUL_API_KEY=$SEOUL_API_KEY" >> .env
echo "PLACE_PATH=$PLACE_PATH" >> .env
echo "PRED_PATH=$PRED_PATH" >> .env
# Docker 컨테이너 재시작 (docker-compose가 있다면)
if [ -f docker-compose.yml ]; then
docker compose down
docker compose rm -f
docker rmi $(docker images -q) -f
docker compose up -d --build
fi
echo "Deployment completed successfully!"