发现jenkins重构多次后,部署到远程tomcat的时候要么undeploy 失败,要么deploy失败,这时需要删除远程tomcat的webapps下面的core.war core文件并重启才会重构成功,针对这种情况,进行优化.
整体思路是在jenkins build成功后,ssh 到远程tomcat主机,将远程tomcat进行重启并删除webapps下面的core 包。 随后让jenkins 的deploy 插件去部署jar包,这样成功率会变高。 下面介绍下这个过程遇到的问题。
1. 远程Tomcat重新启动过慢
查看日志发现扫描jar包过慢,耗时2mins左右。在context配置文件里面添加参数即可解决。
但还是发现过慢,不能接受,发现是tomcat一个加密过慢,耗时将近五分钟。
通过google发现两个解决办法,一个是修改catalina.sh 的参数,一个是直接修改java的security文件的参数,推荐使用第二种,第一种貌似没什么用,虽然时间也少了点。
现在 tomcat 启动不到1000ms , 即不到1s,满足需求.;
2. 远程执行ssh脚本,需要设置JAVA_HOME环境变量,脚本读取不到系统的PATH。
所以在脚本中增加一句设置环境变量,如图.
后面附赠脚本和参考链接:
http://www.jianshu.com/p/b09f2a88897f tomcat启动慢解决
#!/bin/bash
# 重启tomcat 并且 删除 webapps 的war包 author : wwl date :2017.12.09
exportJAVA_HOME="/usr/java/jdk1.8.0_121"
pid=`ps-ef | grep /usr/local/apache-tomcat-8.0.41/ | grep -v grep | awk '{print $2}'`
echo"need to be killed pid is : $pid"
kill -9$pid
echo '进入webapps下删除war包'
cd/usr/local/apache-tomcat-8.0.41/webapps/ && rm -rf core core.war
cd ../bin
./startup.sh
echo'sleep 3s'
sleep 3s
newpid=`ps-ef | grep /usr/local/apache-tomcat-8.0.41/ | grep -v grep | awk '{print $2}'`
echo"newpid $pid"
if test"$newpid"
then
echo "213tomcat restart success, pidis : $newpid"
exit
else
echo 'failed to restart'
exit 1
fi