@@ -36,38 +36,51 @@ jobs:
3636 key : ${{ secrets.DEVELOP_KEY }}
3737 port : ${{ secrets.DEVELOP_PORT || 22 }}
3838 command_timeout : 10m
39+ request_pty : false
3940 script : |
4041 set -e
4142
4243 APP_DIR="/home/${{ secrets.DEVELOP_USERNAME }}/ai"
4344 TEMP_DIR="$APP_DIR/temp"
45+ PORT=8001
4446
45- # 1. 기존 프로세스 중지
46- pkill -f "uvicorn" || true
47- sleep 1
47+ echo "===== AI 서버 배포 시작 ====="
48+
49+ # 1. 기존 프로세스 중지 (포트 기반)
50+ echo "[1/5] 기존 프로세스 종료"
51+ PID=$(lsof -ti :$PORT || true)
52+ if [ -n "$PID" ]; then
53+ kill -15 "$PID"
54+ sleep 2
55+ fi
4856
4957 # 2. 소스 교체 (venv, logs는 유지)
58+ echo "[2/5] 소스 코드 교체"
5059 rm -rf $APP_DIR/src $APP_DIR/app.py $APP_DIR/requirements.txt $APP_DIR/README.md $APP_DIR/data $APP_DIR/scripts $APP_DIR/test_all_task.py
5160 cp -r $TEMP_DIR/* $APP_DIR/
5261 rm -rf $TEMP_DIR/*
5362
54- # 3. 의존성 설치
63+ # 3. 가상환경 및 의존성 설치
64+ echo "[3/5] 의존성 설치"
5565 cd $APP_DIR
56- $APP_DIR/venv/bin/pip install -r requirements.txt --quiet
66+ python3 -m venv venv
67+ source venv/bin/activate
68+ pip install --no-cache-dir -r requirements.txt
5769
58- # 4. 애플리케이션 시작 (백그라운드로 완전히 분리)
59- nohup $APP_DIR/venv/bin/python app.py > logs/app.log 2>&1 &
60- APP_PID=$!
61- disown $APP_PID
70+ # 4. 애플리케이션 시작
71+ echo "[4/5] FastAPI 서버 실행"
72+ nohup python3 app.py > logs/ai.log 2>&1 &
6273
6374 # 5. 시작 확인
64- sleep 3
65- if ps -p $APP_PID > /dev/null; then
66- echo "Application started successfully (PID: $APP_PID)"
75+ echo "[5/5] 서버 시작 확인"
76+ sleep 2
77+ if lsof -ti :$PORT > /dev/null; then
78+ echo "===== 배포 완료 ====="
79+ echo "AI 서버 실행 중 (port $PORT)"
6780 exit 0
6881 else
69- echo "Failed to start application "
70- tail -20 logs/app .log
82+ echo "===== 배포 실패 ===== "
83+ tail -20 logs/ai .log
7184 exit 1
7285 fi
7386
0 commit comments