自动化部署是自动化运维的重要内容之一,如果一个公司经常喊自动化运维,但没有持续集成的概念,没有实施自动化部署,还需要程序员手工打包部署,那么无疑其生产方式是落后的。持续集成的工具有很多,jenkins是其中典型代表之一。
1、经过测试,jenkins2.0在tomcat6.0.39+jdk1.6下面跑不起来,换jdk1.8下则可以。
2、修改jenkins运行家目录
Jenkins默认保存所有的数据文件在/root/.jenkins,这个路径比较别扭,修改的话,方法有二:
1)、直接在tomcat的catalina.sh里面添加:export JENKINS_HOME=
2)、直接在环境文件里设置,如/etc/profile
3、让jenkins使用特定的jdk版本进行构建
经过测试,在build.xml里面配置单独的jdkpath貌似不管用,执行ant还是会用系统自己的jdk版本编译。那么,如何配置单独的jdk版本呢?方法是在jenkins系统管理——系统设置里面增加一个全局属性,设置一下JAVA_HOME,如下图:
4、发邮件。
jenkins的邮件插件和扩展邮件插件用起来太麻烦,个人强烈建议直接用python整一个脚本,python的smtplib库简单好用,发送html+图片是很容易,相比linux的mailx,强大很多。如果构建失败,调用此脚本将build日志发送给相关人士即可。
5、自动部署
jenkins的自动部署是通过一个名为“Deploy to container Plugin”的插件完成的,原理是利用tomcat的admin接口将war包导进去。个人感觉也不太好使,大家都知道,tomcat虽然可以自动识别war包,但是安全的做法是需要重启,不重启的话,经过反复部署war包,jvm会慢慢出现问题。而且重启的时候,shutdown往往不够彻底,必须kill -9干掉tomcat进程才行。基于此,本人也推荐手工完成自动部署,在jenkins机器和远程机器之间建立互信,先备份,然后上传war包,再重启。即便如此,也要注意对远程web服务器进行监控,本人遇到一次远程web服务器内存不够(用了很多swap),导致部署过去的war包,lib加载不进去导致项目启动失败,报监听启动错误:SEVERE: Error listenerStart