| ¶Ô±ÈÐÂÎļþ |
| | |
| | | @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. |
| | | |
| | | :: Check if sshpass is available, download if not |
| | | where sshpass >nul 2>&1 |
| | | if %errorlevel% neq 0 ( |
| | | 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... |
| | | |
| | | :: Get script directory |
| | | set "SSHPASS_DIR=%~dp0bin" |
| | | if not exist "!SSHPASS_DIR!" mkdir "!SSHPASS_DIR!" |
| | | |
| | | :: Download using PowerShell with escaped variables |
| | | powershell -NoProfile -Command "$url='https://github.com/xhcoding/sshpass-win32/releases/download/v1.0.3/sshpass.exe'; $out='!SSHPASS_DIR!\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. |
| | | ) |
| | | |
| | | :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 |