我们在用jenkins 与tomcat热部署实现自动化的时候,经常会发现 tomcat报内存溢出,导致发布经常失败。
还有就是如果项目当中有socket 长连接应用的时候,也就只能手动停止tomcat,再启动。
所以,为了解决以上的问题。用jenkins+ansible 完美解决。
具体如下:(ansible,jenkins具体安装与配置需自己baidu一下,这里不多讲解)
1.创建ansible 脚本 vim automaticRelease.yml
- hosts: '{{hosts}}' //指定要发布的机器(也可以指定多台)
tasks:
- name: "stop tomcat"
shell: "ps -ef |grep tomcat | grep -v grep |awk '{print $2}'|xargs kill -9" //杀掉tomcat
- name: "clean the directory"
command: rm -rf /data/tomcat/webapps/ //删除老版本的包
- name: "delivery the war to the remote_host"
copy:
src=/maven/root/.jenkins/jobs/项目名称/workspace/项目名称/target/xxx.war //cp 项目war包
dest=/usr/tomcat/webapps/ //cp 到tomcat的webapps目录
- name: "start the tomcat"
shell: chdir=/data/tomcat/bin nohup ./catalina.sh start //启动tomcat
2. jenkins 配置:
ansible-playbook automaticRelease.yml --extra-vars "hosts=all" //hosts 为指定的要发布的tomcat机器.all表示集群所有机器