jenkins 将maven项目的jar包通过ssh远程部署到windows系统启动

jenkins后端maven项目部署流程

*环境:* jdk1.8、maven、windows server 2012 r2

*Jenkins主要插件:* Gerrit Trigger 2.36.0、Maven Integration plugin 3.19、Git plugin3.12.0、Windows Exe Runner Plugin 1.2、Publish Over SSH 1.24

*流程简介:* Gerrit Trigger触发构建 -> git拉取临时仓库代码 -> maven打包构建 -> 本地发布(本地整合jar包) -> ssh远程部署执行发布bat脚本

预备(将jar包制作为windows的服务):

1、下载Winsw.exe

2、编写配置文件sample.xml

<service>
<id>sample</id>
<name>sample</name>
<description>This service runs sample system.</description>
<executable>java</executable>
<arguments>-Xrs -Xmx256m -jar "%BASE%\sample.jar" </arguments>
<log mode="roll" />
<onfailure action="restart" />
</service>

3、修改为同样的名称

把demo.jar、sample.xml、winsw.exe 放到同一目录,并且修改为和jar包同样的名称(同时创建start.bat、stop.bat脚本)

请添加图片描述

stop.bat(关闭服务,删除jar包)

net stop "服务名称"
set CWD=%~dp0
del /f/s %CWD%"jar包名称".jar
exit 0

start.bat(开启服务)

net start "服务名称"
exit 0

4、安装yingjiapi服务

打开CMD命令行,并切换到jar所在目录,运行 yingjiapi install 命令进行服务安装

一、触发构建

请添加图片描述

二、拉取临时仓库代码

请添加图片描述

三、配置settings.xml文件

请添加图片描述

四、maven打包构建

请添加图片描述

五、发布步骤(本地整合jar包)

请添加图片描述

执行windows批处理命令

BUILD_ID=dontKillMe
rem jar包路径
set TARGET_PATHA=gec-manage-api\target
set TARGET_PATHB=hj212-monitor-center\target
rem 运行路径
set BIN_BATH=E:\jenkins\.jenkins\workspace\maven_demo\server
rem 文件名
SET JAR_FILEA=emergency-monitoring-0.0.1-SNAPSHOT.jar
SET JAR_FILEB=hj212-monitor-center.jar
rem 复制源jar到运行环境
COPY /y %TARGET_PATHA%\%JAR_FILEA% %BIN_BATH%\yingjiapi.jar
COPY /y %TARGET_PATHB%\%JAR_FILEB% %BIN_BATH%\yingjisocket.jar

六、构建后操作(ssh远程部署)

请添加图片描述

stop.bat(关闭服务,删除jar包)

net stop "服务名称"
set CWD=%~dp0
del /f/s %CWD%"jar包名称".jar
exit 0

请添加图片描述

start.bat(开启服务)

net start "服务名称"
exit 0
总结:

将stop.bat脚本通过Jenkins插件publish-over-ssh传到远程Windows服务器下

并执行windows下的命令cmd /c call C:\stop.bat

stop.bat的内容

@echo off
set port="端口号"
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /pid %%m -t -f
exit

​ 目的是为了把之前8091端口的服务先关闭

将打包好的jar文件和start.bat上传,截止到这一步都没有问题,命令都能执行。

执行命令cmd /c call C:\start.bat,脚本代码如下

@echo off
start javaw -jar C:\"jar包名称".jar
exit

执行后提示SUCESS

但是jar包并有启动起来。

后来也测试过通过vbs脚本启动,结局还是一样

最终查阅资料将jar包制作成windows的服务可以解决

jenkins前端vue项目部署流程

*环境:* node.js14.13.1、windows server 2012 r2 、nginx 1.12.6

*Jenkins主要插件:* Gerrit Trigger 2.36.0、NodeJS Plugin 1.5.1、Git plugin3.12.0、Windows Exe Runner Plugin 1.2、Publish Over SSH 1.24

*流程简介:* Gerrit Trigger触发构建 -> git拉取临时仓库代码 -> npm本地打包 -> ssh远程部署执行发布bat脚本

预备(服务器部署nginx):

配置好nginx服务,在nginx1.21.6中提前写好stop.bat脚本

用于删除html目录下的dist包

set CWD=%~dp0
rmdir /s/q %CWD%\html\dist
exit 0

一、触发构建

请添加图片描述

二、拉取临时仓库代码

请添加图片描述

三、本地构建(下载依赖、打包)

请添加图片描述

四、远程部署

请添加图片描述

stop.bat(用于删除html包下原有的dist包)

set CWD=%~dp0
rmdir /s/q %CWD%\html\dist
exit 0

请添加图片描述

总结:

之前预想的是替换dist包之后需要重启服务刷新的,但jenkins在执行启动脚本时同样也进入到了阻塞状态,最初的解决方案是将修改gerrit的构建结果的返回值,后来测试发现,nginx是有热部署的特性,所以就直接替换了dist包作为最终解决方案。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值