Jenkins 向Windows 2019 推送jar包和执行命令后,无法执行的解决方案

文章讲述了作者在Windows环境下使用批处理脚本来关闭端口、删除jar包并在Jenkins中观察到的问题,即批处理看似执行完毕,但实际jar包未启动。作者尝试了多种解决方案,包括发送启动命令和定时检查进程是否存在。
摘要由CSDN通过智能技术生成

使用windows批处理触发时Jenkins显示执行成功,关闭端口并删除jar包的批处理文件执行了,但是执行jar包的批处理实际未触发。

关闭端口并删除jar包的批处理

我删除的目录在C:\Users\Administrator\bhzn-admin\target\*

@echo off
setlocal enabledelayedexpansion

set "PORT=8045"
set "LOG_FILE=C:\Users\Administrator\Desktop\bat\logs\stopjar.log"
set "CONTINUE_PROCESSING=true"

:CHECK_PORT_USAGE
echo Checking port usage at %DATE% %TIME% >> "%LOG_FILE%"
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":!PORT! "') do (
    set "PROC_PID=%%m"
    if defined PROC_PID (
        echo Process with PID !PROC_PID! is still using port !PORT! at %DATE% %TIME% >> "%LOG_FILE%"
        taskkill /F /PID !PROC_PID! 2>&1 >> "%LOG_FILE%"
        set "CONTINUE_PROCESSING=true"
        goto CHECK_PORT_USAGE
    )
)

:DELETE_FILES
echo Attempting to delete files from C:\Users\Administrator\bhzn-admin\target at %DATE% %TIME% >> "%LOG_FILE%"
del /F /S /Q "C:\Users\Administrator\bhzn-admin\target\*" 2>>&1 >> "%LOG_FILE%"
if !errorlevel! neq 0 (
    echo Failed to delete all files from target folder at %DATE% %TIME%, Error code: !errorlevel! >> "%LOG_FILE%"
    set "CONTINUE_PROCESSING=true"
    goto DELETE_FILES
) else (
    echo Successfully deleted all files from target folder at %DATE% %TIME% >> "%LOG_FILE%"
    set "CONTINUE_PROCESSING=false"
)

:VERIFY_CLEANUP
if "!CONTINUE_PROCESSING!"=="false" (
    echo Cleanup completed at %DATE% %TIME% >> "%LOG_FILE%"
    goto END
) else (
    echo Waiting for cleanup to complete... >> "%LOG_FILE%"
    timeout /T 5 /NOBREAK > nul
    goto CHECK_PORT_USAGE
)

:END
echo End of script at %DATE% %TIME% >> "%LOG_FILE%"
endlocal
exit
执行jar包的批处理

这是其中一个最简单的,试了很多方法都无效

@echo off
start  javaw -jar -Xms256m -Xmx512m "C:\Users\Administrator\bhzn-admin\target\BH-ZHLK.jar" > "C:\Users\Administrator\bhzn-admin\logs\application.log" 2>&1
exit 0

解决方案一

我决定不使用批处理直接发送启动命令,可实现启动操作,但是由于是发送命令,Jar会一直执行,从而导致Jenkins显示,命令执行超时警告。

启动命令

javaw -jar -Xms256m -Xmx512m "C:\Users\Administrator\bhzn-admin\target\BH-ZHLK.jar" > "C:\Users\Administrator\bhzn-admin\logs\application.log" 2>&1

解决方案二

既然发送启动命令不行,那我们直接在执行的服务器加入一个批处理检查,每20秒检查一次,如果进程不存在则,重新启动

@echo off

set "jarPath=C:\Users\Administrator\bhzn-admin\target\BH-ZHLK.jar"
set "logFilePath=C:\Users\Administrator\bhzn-admin\logs\application.log"

:START_CHECK
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
tasklist /NH /FI "IMAGENAME eq javaw.exe" | findstr /I "BH-ZHLK.jar" > nul || goto STARTPRO

ping -n 10 127.0.0.1 > nul
goto START_CHECK

:STARTPRO
@echo %Ymd% Starting %jarPath% process...
if exist "%jarPath%" (
    start "BH-ZHLK Daemon" /B javaw -jar -Xms256m -Xmx512m "%jarPath%" > "%logFilePath%" 2>&1
)

ping -n 20 127.0.0.1 > nul
goto START_CHECK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值