1、安装 Publish Over SSH 插件

安装Publish Over SSH插件.jpg


2、系统配置 --> SSH配置

ssh配置.jpg


3、新建一个任务

新建任务.jpg


4、配置git仓库信息

git.jpg


5、配置触发器(可选)

触发器.jpg


6、配置maven指令

maven脚本.jpg


7、脚本配置

脚本配置.jpg

** 说明与注意事项:**

这里任何一个路径配置有问题 都会导致文件无法传输到目标服务器!!!!

  • 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 里面配置了服务器路径为 /,那么这里指定路径的时候,会自在前面动拼上 /

自动拼接前缀.jpg
所以这里填写的路径为:

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的使用)