143 lines
4.5 KiB
Batchfile
143 lines
4.5 KiB
Batchfile
@echo off
|
|
setlocal EnableExtensions EnableDelayedExpansion
|
|
|
|
cd /d "%~dp0"
|
|
|
|
set "APP_URL=http://127.0.0.1:5000"
|
|
set "PYTHON_EXE=python"
|
|
|
|
echo ==================================================
|
|
echo [0/7] Python 버전 확인
|
|
echo ==================================================
|
|
python --version >nul 2>&1
|
|
if errorlevel 1 (
|
|
py -3 --version >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo [오류] Python 또는 py launcher를 찾지 못했습니다.
|
|
echo Python 3.10 이상을 설치한 뒤 다시 시도하세요.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
set "PYTHON_EXE=py -3"
|
|
)
|
|
|
|
for /f "delims=" %%V in ('%PYTHON_EXE% -c "import sys; print(\"[정보] Python {}.{}.{}\".format(*sys.version_info[:3])); raise SystemExit(0 if sys.version_info >= (3, 10) else 1)" 2^>nul') do echo %%V
|
|
if errorlevel 1 (
|
|
echo [경고] Python 3.10 미만입니다. 동작은 할 수 있지만 권장하지 않습니다.
|
|
)
|
|
|
|
echo ==================================================
|
|
echo [1/7] Git 최신 코드 가져오기
|
|
echo ==================================================
|
|
if exist .git (
|
|
for /f "delims=" %%B in ('git branch --show-current 2^>nul') do set "BRANCH=%%B"
|
|
if not defined BRANCH set "BRANCH=main"
|
|
echo [정보] 현재 브랜치: !BRANCH!
|
|
git pull --rebase --autostash origin !BRANCH!
|
|
if errorlevel 1 (
|
|
echo [경고] git pull 실패. 원격 저장소 또는 네트워크를 확인하세요.
|
|
echo 로컬 파일로 계속 진행합니다.
|
|
) else (
|
|
echo [완료] 최신 코드 반영 완료
|
|
)
|
|
) else (
|
|
echo [경고] .git 폴더가 없습니다. git pull 없이 로컬 파일로 진행합니다.
|
|
)
|
|
|
|
echo ==================================================
|
|
echo [2/7] .venv 확인
|
|
echo ==================================================
|
|
if not exist .venv\Scripts\python.exe (
|
|
echo [정보] .venv가 없어서 새로 생성합니다.
|
|
%PYTHON_EXE% -m venv .venv
|
|
if errorlevel 1 (
|
|
echo [오류] .venv 생성 실패
|
|
pause
|
|
exit /b 1
|
|
)
|
|
) else (
|
|
echo [완료] .venv가 이미 존재합니다.
|
|
)
|
|
|
|
echo ==================================================
|
|
echo [3/7] 가상환경 활성화
|
|
echo ==================================================
|
|
call .venv\Scripts\activate.bat
|
|
if errorlevel 1 (
|
|
echo [오류] 가상환경 활성화 실패
|
|
pause
|
|
exit /b 1
|
|
)
|
|
echo [완료] 가상환경 활성화됨: !VIRTUAL_ENV!
|
|
|
|
echo ==================================================
|
|
echo [4/7] pip 업그레이드
|
|
echo ==================================================
|
|
python -m pip install --upgrade pip
|
|
if errorlevel 1 (
|
|
echo [오류] pip 업그레이드 실패
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo ==================================================
|
|
echo [5/7] 의존성 설치
|
|
echo ==================================================
|
|
if not exist requirements.txt (
|
|
echo [오류] requirements.txt가 없습니다.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
python -m pip install -r requirements.txt
|
|
if errorlevel 1 (
|
|
echo [오류] requirements.txt 설치 실패
|
|
pause
|
|
exit /b 1
|
|
)
|
|
echo [완료] 의존성 설치 완료
|
|
|
|
echo ==================================================
|
|
echo [6/7] Playwright 브라우저 설치
|
|
echo ==================================================
|
|
python -m playwright install
|
|
if errorlevel 1 (
|
|
echo [경고] Playwright install이 실패했습니다.
|
|
echo 이미 설치되어 있으면 계속 사용합니다.
|
|
)
|
|
|
|
echo ==================================================
|
|
echo [7/7] Flask 서버 실행
|
|
echo ==================================================
|
|
if not exist main.py (
|
|
echo [오류] main.py를 찾을 수 없습니다.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
start "BaseBall Flask Server" cmd /k "%PYTHON_EXE% main.py"
|
|
|
|
echo [정보] 서버가 올라올 때까지 기다립니다...
|
|
set "READY=0"
|
|
for /l %%I in (1,1,60) do (
|
|
powershell -NoProfile -Command "try { $r = Invoke-WebRequest -Uri '%APP_URL%' -UseBasicParsing -TimeoutSec 2; if ($r.StatusCode -ge 200) { exit 0 } } catch { exit 1 }" >nul 2>&1
|
|
if not errorlevel 1 (
|
|
set "READY=1"
|
|
goto :server_ready
|
|
)
|
|
timeout /t 1 /nobreak >nul
|
|
)
|
|
|
|
:server_ready
|
|
if "!READY!"=="1" (
|
|
echo [완료] 서버가 시작되었습니다. 브라우저를 엽니다.
|
|
start "" "%APP_URL%"
|
|
) else (
|
|
echo [경고] 서버 시작 확인 시간이 초과되었습니다.
|
|
echo http://127.0.0.1:5000 를 직접 열어보세요.
|
|
)
|
|
|
|
echo.
|
|
echo 업데이트와 실행이 끝났습니다.
|
|
echo 서버 창은 별도로 열려 있습니다.
|
|
pause
|