@echo off
|
chcp 65001 >nul
|
setlocal enabledelayedexpansion
|
|
:: ================= Config =================
|
set "USER=dell"
|
set "PASS=xd123456@.."
|
set "IP=1.15.17.182"
|
set "PORT=10000"
|
set "JAR_FILE=target/ruoyi.jar"
|
set "REMOTE_DIR=/home/service/dlsmlspro-product"
|
set "SSH_OPTS=-o StrictHostKeyChecking=no -o ConnectTimeout=10"
|
:: ===========================================
|
|
echo ==========================================
|
echo RuoYi Auto Deploy Script
|
echo ==========================================
|
echo.
|
|
:: Get script directory
|
set "SSHPASS_DIR=%~dp0bin"
|
set "SSHPASS_EXE=%SSHPASS_DIR%\sshpass.exe"
|
|
:: Check if local sshpass.exe already exists
|
if exist "%SSHPASS_EXE%" (
|
set "PATH=%SSHPASS_DIR%;%PATH%"
|
echo [OK] Found local sshpass: %SSHPASS_EXE%
|
goto :check_jar
|
)
|
|
:: Check if sshpass is available in system PATH
|
where sshpass >nul 2>&1
|
if %errorlevel% equ 0 (
|
echo [OK] Found sshpass in system PATH
|
goto :check_jar
|
)
|
|
:: sshpass not found, try to install
|
echo [WARN] sshpass not found, trying to install...
|
echo.
|
|
:: Check if running in Git Bash environment
|
where bash >nul 2>&1
|
if %errorlevel% equ 0 (
|
echo [INFO] Git Bash detected, trying pacman install...
|
bash -c "pacman -S --noconfirm sshpass" 2>nul
|
if !errorlevel! equ 0 (
|
echo [OK] sshpass installed via pacman!
|
goto :check_jar
|
)
|
)
|
|
:: Download standalone sshpass
|
echo [INFO] Downloading sshpass...
|
|
if not exist "%SSHPASS_DIR%" mkdir "%SSHPASS_DIR%"
|
|
:: Download using PowerShell
|
powershell -NoProfile -Command "$url='https://github.com/xhcoding/sshpass-win32/releases/download/v1.0.3/sshpass.exe'; $out='%SSHPASS_EXE%'; Write-Host \"Downloading to: $out\"; try { Invoke-WebRequest -Uri $url -OutFile $out -UseBasicParsing; exit 0 } catch { Write-Host $_.Exception.Message; exit 1 }"
|
if !errorlevel! neq 0 (
|
echo [ERROR] Failed to download sshpass!
|
echo [HINT] Please install sshpass manually or use Git Bash: pacman -S sshpass
|
goto :error_exit
|
)
|
|
:: Add bin dir to PATH temporarily
|
set "PATH=%SSHPASS_DIR%;%PATH%"
|
echo [OK] sshpass downloaded to: %SSHPASS_DIR%
|
echo [HINT] Consider adding %SSHPASS_DIR% to system PATH for permanent use
|
echo.
|
|
:check_jar
|
:: Check if JAR file exists
|
if not exist "%JAR_FILE%" (
|
echo [ERROR] JAR file not found: %JAR_FILE%
|
goto :error_exit
|
)
|
|
:: Display file size
|
for %%F in ("%JAR_FILE%") do set "JAR_SIZE=%%~zF"
|
set /a "JAR_SIZE_MB=JAR_SIZE/1024/1024"
|
echo [INFO] JAR size: %JAR_SIZE_MB% MB
|
echo [INFO] Target: %USER%@%IP%:%PORT%
|
echo [INFO] Remote dir: %REMOTE_DIR%
|
echo.
|
|
:: Upload JAR file
|
echo [STEP 1/2] Uploading %JAR_FILE%...
|
sshpass -p "%PASS%" scp -P %PORT% %SSH_OPTS% "%JAR_FILE%" %USER%@%IP%:%REMOTE_DIR%/
|
if %errorlevel% neq 0 (
|
echo [ERROR] Upload failed! Check network or credentials.
|
goto :error_exit
|
)
|
echo [OK] Upload completed!
|
echo.
|
|
:: Execute remote deploy script
|
echo [STEP 2/2] Running publish.sh...
|
sshpass -p "%PASS%" ssh -p %PORT% %SSH_OPTS% %USER%@%IP% "cd '%REMOTE_DIR%' && chmod +x publish.sh && ./publish.sh"
|
if %errorlevel% neq 0 (
|
echo [ERROR] publish.sh execution failed!
|
goto :error_exit
|
)
|
|
echo.
|
echo ==========================================
|
echo [SUCCESS] Deploy completed!
|
echo ==========================================
|
goto :end
|
|
:error_exit
|
echo.
|
echo ==========================================
|
echo [FAILED] Deploy failed!
|
echo ==========================================
|
|
:end
|
pause
|