0%

jenkins插件“Publish Over SSH”拷贝文件到远程服务器并执行脚本

之前的java项目打出来的是war包,通过插件”Deploy to container”部署到tomcat下,近期项目组使用到spring boot项目,打出来的是jar包,需要远程发布,网上找了下,基本上都是通过”Publish Over SSH”插件,将jar包拷贝到远程服务器上,然后通过执行shell脚本启动jar项目,这里记录一下过程。

安装 Publish Over SSH 插件

Manage Jenkins –>Manage Plugins–>可选插件–>Publish Over SSH–>直接安装

添加Linux主机

Manage Jenkins –>Configure System –>Publish Over SSH
这这里我们需要设置远程主机相关信息,如主机名,用户,密码,远程主机目录;高级选项选项中,我们可以选择key和密码两种方式访问远程linux主机,还可以设置跳转机
02

构建项目

构建一个maven项目,其他信息和之前的一样,配置好svn地址,相关用户获取代码。
Build阶段参数设置为:-e clean package -Dmaven.test.skip=true
02
02
Source Files:需要发布的jar包位置,需要写相对(当前项目目录)路径;如:当前项目名称是monitor-cloud,jar包的位置是/var/lib/jenkins/workspace/monitor-cloud/monitor-gateway/target/monitor-gateway.jar,在Source Files填写 monitor-gateway/target/monitor-gateway.jar即可
Remove prefix:表示需要移除的目录,比如这里填写monitor-gateway/target,则表示发布时,只把monitor-gateway.jar.jar发布到远程linux,而不包含monitor-gateway/target目录结构
Remote directory:表示需要把编译好的war包发布到远程linux的哪个目录下 (我刚才在全局属性里设置了,这里就留空了)
Exec command:需要执行的shell命令,shell命令在远程linux服务器上.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo "deploy monitor-gateway.jar"

pid=`ps -ef|grep monitor-gateway|grep -v grep|awk '{print $2}'`

if [ -n "$pid" ]
then
echo 'The pid: server' $pid ' will be killed....'
kill -9 $pid
echo 'The pid: server' $pid ' will be start'
nohup /usr/local/jdk1.8.0_202/bin/java -jar /usr/local/ths/monitor-gateway.jar > /dev/null &
else
echo 'The pid: server' $pid ' not exist , will be start'
nohup /usr/local/jdk1.8.0_202/bin/java -jar /usr/local/ths/monitor-gateway.jar > /dev/null &
fi
echo 'The pid: server' $pid ' started'

参考:https://blog.csdn.net/l848168/article/details/85261514