Jenkins远程部署jar并启动
1、安装 Publish Over SSH
插件
2、系统配置 --> SSH配置
3、新建一个任务
4、配置git仓库信息
5、配置触发器(可选)
6、配置maven指令
7、脚本配置
** 说明与注意事项:**
这里任何一个路径配置有问题 都会导致文件无法传输到目标服务器!!!!
-
Source files(源文件)
这里是配置jenkins所在服务器生成的jar包源文件
可以指定相对路径,jenkins的执行是在当前workspace目录下执行的,比如这个任务(/root/.jenkins/workspace/SendBuildTest)
全路径:
/root/.jenkins/workspace/SendBuildTest/target/zboot-admin-1.0.jar
相对路径:
target/zboot-admin-1.0.jar
-
Remove prefix(删除前缀)
这里的作用是去掉 jenkins 所在服务器jar包文件的前缀路径
如果不去掉,那么在目标服务生成的结构就是:
/usr/local/src/zboot-admin/target/zboot-admin-1.0.jar
去掉前缀后:
/usr/local/src/zboot-admin/zboot-admin-1.0.jar
-
Remote directory(目标服务器的上传路径)
这里要注意的是前面系统配置-> ssh 里面配置了服务器路径为 /
,那么这里指定路径的时候,会自在前面动拼上 /
,
所以这里填写的路径为:
usr/local/src/zboot-admin
拼接之后对应路径为:
/usr/local/src/zboot-admin
-
Exec command(执行的脚本)
这里配置的就是文件上传成功之后,对目标服务器要执行的脚本,一般选择在目标服务器指定路径下先创建一个脚本文件,然后这里就可以直接调用那个脚本文件了
目标服务器脚本文件内容:
#i/bin/bash
pid=$(ps x | grep "/usr/local/src/zboot-admin/zboot-admin-1.0.jar" | grep -v grep | awk '{print $1}')
echo $pid
kill -9 $pid
nohup java -jar -Xmx256M -Xms128M /usr/local/src/zboot-admin/zboot-admin-1.0.jar --spring.profiles.active=dev > /usr/local/src/zboot-admin/nohup.out &
注意:这里脚本结尾并没有tail -f /usr/local/src/zboot-admin/nohup.out
,因为如果存在这种指令的话,会导致 Jenkins 执行脚本完成之后无法退出,然后一直等到超时,提示失败
大坑:
这里配置的脚本可以正常执行其他命令 ,但是spring boot工程死活启动不了,无报错,远程服务器上无启动日志,无启动进程。
解决办法:在第一行增加 . /etc/profile ,之后工程可以正常启动。具体原因不清楚,猜测ssh连接后需要刷新bash的环境变量。
8、文章推荐:
https://segmentfault.com/a/1190000038464808(别当工具人了,手摸手教会你 Jenkins !)
https://blog.csdn.net/qq_42105629/article/details/122240478(Jenkins将多个Job聚合一个Job启动-Multijob的使用)