我们在用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表示集群所有机器

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐