初始化
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
@echo off
|
||||
REM JCF deployment: build locally, upload over SSH, and deploy on Linux.
|
||||
REM Usage: push.bat user@host [stage-only|with-env]
|
||||
|
||||
setlocal DisableDelayedExpansion
|
||||
cd /d "%~dp0..\.."
|
||||
if "%~1"=="" (
|
||||
echo Usage: push.bat user@host [stage-only^|with-env]
|
||||
echo Example: push.bat root@1.2.3.4
|
||||
exit /b 1
|
||||
)
|
||||
set "REMOTE=%~1"
|
||||
set "REMOTE_ROOT=/opt/juyou_ai"
|
||||
set "PACKAGE_ENV="
|
||||
if "%~2"=="with-env" set "PACKAGE_ENV=.env"
|
||||
if not "%~2"=="" if not "%~2"=="stage-only" if not "%~2"=="with-env" (
|
||||
echo The second argument can only be stage-only or with-env.
|
||||
exit /b 1
|
||||
)
|
||||
if "%~2"=="with-env" if not exist "API\.env" (
|
||||
echo Missing API\.env. Deployment environment cannot be uploaded.
|
||||
exit /b 1
|
||||
)
|
||||
if not "%~3"=="" (
|
||||
echo Too many arguments.
|
||||
exit /b 1
|
||||
)
|
||||
set "ARCHIVE=%TEMP%\juyou-deploy-%RANDOM%-%RANDOM%.tar.gz"
|
||||
set "REMOTE_ARCHIVE=/tmp/juyou-deploy.tar.gz"
|
||||
set "REMOTE_ENV=/tmp/juyou_ai.env"
|
||||
set "PACKAGE_MODEL="
|
||||
|
||||
echo [0/5] Checking offline Whisper model...
|
||||
ssh "%REMOTE%" "test -f %REMOTE_ROOT%/models/faster-whisper-small/config.json && test -f %REMOTE_ROOT%/models/faster-whisper-small/model.bin && test -f %REMOTE_ROOT%/models/faster-whisper-small/tokenizer.json && test -f %REMOTE_ROOT%/models/faster-whisper-small/vocabulary.txt" >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
python "API\deploy\download_whisper_model.py"
|
||||
if errorlevel 1 exit /b 1
|
||||
set "PACKAGE_MODEL=models"
|
||||
) else (
|
||||
echo Offline Whisper model already exists on the server.
|
||||
)
|
||||
|
||||
echo [1/5] Building WEB and ADMIN...
|
||||
call npm --prefix WEB run build
|
||||
if errorlevel 1 exit /b 1
|
||||
call npm --prefix ADMIN run build
|
||||
if errorlevel 1 exit /b 1
|
||||
|
||||
echo [2/5] Building Linux amd64 API...
|
||||
pushd API
|
||||
set "GOOS=linux"
|
||||
set "GOARCH=amd64"
|
||||
go build -trimpath -ldflags "-s -w" -o bin/jcf-api ./cmd/api
|
||||
if errorlevel 1 (popd & exit /b 1)
|
||||
popd
|
||||
|
||||
echo [3/5] Packaging deployment files...
|
||||
tar --exclude=.git --exclude=tools/ffmpeg --exclude=deploy/.deploy.conf -C API -czf "%ARCHIVE%" bin static deploy migrations acme workers %PACKAGE_MODEL% %PACKAGE_ENV%
|
||||
if errorlevel 1 exit /b 1
|
||||
|
||||
echo [4/5] Uploading and staging deployment files...
|
||||
scp "%ARCHIVE%" "%REMOTE%:%REMOTE_ARCHIVE%"
|
||||
if errorlevel 1 exit /b 1
|
||||
ssh "%REMOTE%" "bash -lc 'set -e; WORK=/tmp/juyou-deploy-work; ENV_UPLOAD=%REMOTE_ENV%; cleanup(){ rm -rf $WORK %REMOTE_ARCHIVE%; }; trap cleanup EXIT; rm -rf $WORK; mkdir -p $WORK; tar -xzf %REMOTE_ARCHIVE% -C $WORK; if [ -f $WORK/.env ]; then install -m 600 $WORK/.env $ENV_UPLOAD; else rm -f $ENV_UPLOAD; fi; rm -f $WORK/.env; mkdir -p %REMOTE_ROOT%; if command -v rsync >/dev/null 2>&1; then rsync -a --delete --exclude=/.env --exclude=/media/ --exclude=/backups/ --exclude=/models/ $WORK/ %REMOTE_ROOT%/; if [ -d $WORK/models ]; then mkdir -p %REMOTE_ROOT%/models; rsync -a $WORK/models/ %REMOTE_ROOT%/models/; fi; else cp -a $WORK/. %REMOTE_ROOT%/; fi; echo upload complete; echo run manually: bash %REMOTE_ROOT%/deploy/one_click_deployment.sh'"
|
||||
if errorlevel 1 exit /b 1
|
||||
|
||||
echo [5/5] Cleaning local temporary archive...
|
||||
del "%ARCHIVE%" >nul 2>nul
|
||||
echo Deployment push complete.
|
||||
Reference in New Issue
Block a user