Jenkins安装参考 https://blog.csdn.net/qq_31142553/article/details/81193173
目的:实现jenkins自动打包部署jar
Jenkins上安装的插件:
实现思路:
- 将所有需要之心的命令全部写在批处理
- 将批处理注册为Windows服务
- 在Jenkins上直接使用命令调用服务
问题:
1.在Jenkins上使用命令行去执行批处理,随着Jenkins结束批处理也结束
2.在Jenkins 执行start javaw **.jar ,Jenkins正常结束,服务无法启动
尝试过后台运行批处理或运行jar,但依然未解决,所以最终选择以上思路
参考了网上的写法去结束进程,使用端口的方式存在杀掉模糊匹配出的其他进程
以下是结束正在运行的jar脚本
/*
以下脚本本地测试通过,放置Jenkins执行出现无法结束Java进程
原因不明,但可以尝试一下
*/
//方式一 使用jar包名字方式结束正在运行的Jar包,运行后可以在命令行使用jps -l 查看到进程
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1" %%a in ('jps -l ^| findstr XXXX.jar') do taskkill /f /pid %%a
//方式二 通过监听端口的方式去结束进程
@echo off
rem 设置监听的端口号
set port=82
echo port : %port%
for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (
if [%%d] EQU [LISTENING] (
set pid=%%e
)
)
if defined str (
for /f "usebackq tokens=1-5" %%a in (`tasklist ^| findstr %pid%`) do (
set image_name=%%a
rem 根据进程ID,kill进程
taskkill /f /pid %pid%
echo kill进程 pid %pid%
)
) else (
echo program not find
)
1.完整批处理脚本
@echo off
:: 以下注释代码是为了让程序在后台执行,未启用
:: if "%1" == "h" goto begin
:: mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:: :begin
set jar_name=XXX-admin
set old_jar=%jar_name%.jar
rem 获取当前时间
set curTime=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
set new_name=%jar_name%%curTime%.jar
::下面这条命令会等待3秒,并且可以按任意键跳过等待
:: >nul ping 127.1 /3
cd D:\program files\jenkins\workspace\deploy_jar
if exist %old_jar% (
:: 移动文件
move %old_jar% bak_jar
echo -------------移动文件%old_jar% end-------------
:: 重命名文件
cd bak_jar
rename %old_jar% %new_name%
echo -------------重命名文件%old_jar% to %new_name% end-------------
)
cd "D:\program files\jenkins\workspace\XXX-project\XXX-admin\target"
copy %old_jar% "D:\program files\jenkins\workspace\deploy_jar\"
echo -------------复制文件%old_jar% end-------------
rem 运行jar
cd D:\program files\jenkins\workspace\deploy_jar
if exist %old_jar% (
echo -------------运行jar包%old_jar% start-------------
rem start javaw -jar %old_jar%
start /b javaself -jar %old_jar% > start.log
)
echo exit
exit
2.使用winsw将批处理注册为Windows服务参考https://blog.csdn.net/qq_28566071/article/details/80882503
winsw 下载地址 https://github.com/kohsuke/winsw/releases
3.Jenkins上配置,就是启动运行服务
使用命令获取日期相关参考https://blog.csdn.net/u013986802/article/details/72381743#