배포 v1.11.1 #90
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: 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!" |