8 天以前 b22ebe8fad1691b35adcf321fe2e136795b3f81d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
@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