jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)

时间:2023-03-08 20:01:38
jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)

jenkins(windows) ----> 应用服务器(linux):

1。后台java服务:

与部署在windows上不同的是,这里我选择了在【构建后操作】中使用ssh向远程linux服务器传送jar包和需要执行的命令

jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)

jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)

sh /root/home/scripts/demo.sh
cp -r /home/soft/project/sr_f5_manage/sr_f5_manage-0.0.-SNAPSHOT.jar /home/soft/jarpackage
#每次构建都会有日志,为了不越来越多,每次运行项目之前会清空下这个文件nohup.out
cp /dev/null nohup.out
cd /home/soft/jarpackage
nohup java -jar sr_f5_manage-0.0.-SNAPSHOT.jar &
sleep 10
#此处之所以加上sleep 10 是因为一开始虽然构建成功,但是netstat -nlp | grep 8007查看进程发现找不到进程,因为项目启动需要时间,尝试着sleep发现就好了

BUILD_ID=dontKillMe:网上很多人说构建结束,服务进程会被kill,需要加上这个才行。我试了下,不要这个时进程也不会被kill

#这个就是上面的demo.sh脚本,根据项目端口查找进程,然后kill掉
port=$
if [ "${port}" == "" ];then
exit
fi
#根据端口号查询对应的pid,端口号在执行脚本时做为参数
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F "/" '{ print $1 }'); #杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ]; then
kill - $pid;
fi

ps:这样配置之后,构建还是会有问题,如图。jenkins不会正常结束构建,而是直到超时:

jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)

这时就需要在【高级】选项那里勾选上Exec in pty,这样就可以正常了。参考地址:  https://blog.csdn.net/u013066244/article/details/52788407

jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)

2.前端:我们前端使用tomcat,和后端没什么不一样,只有配置的脚本不一样。如图,因为比较简单,就不单独贴出来了

图中第一行命令是关掉tomcat服务,如果tomcat本身没有运行则构建会报错,因此需要先判断下tomocat服务是否正在运行,我直接用上面的demo.sh脚本去代替这一步

sh /root/home/scripts/demo.sh 

jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)

Source files的匹配规则可以了解下:

* matches zero or more characters, ? matches one character.

jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)