因为手动部署好麻烦,要先在eclipse更新代码,然后build一下,再把target下生成的war包复制到tomcat的webapps下,启动tomcat。
首先需要下载一个Jenkins的插件:Deploy to container Plugin ,可以在Jenkins的系统管理->插件管理->可选插件中查找
安装完成后重启Jenkins,在增加构建后操作步骤中会多出一个选项Deploy war/ear to a container。
首先新建一个任务,只需要配置代码获取方式,build命令和部署war包配置即可。
1.代码获取,我们是用SVN方式获取代码的。
2.build命令。
3.war包部署。
WAR/EAR files:输入war包的相对路径,如我的war包在新建目录的target下
context path:输入用来访问tomcat的名称,localhost:8080/p**
add container:增加容器,一般选tomcat 7X就可以。这里的username与password需要到tomcat的conf文件夹中的tomcat-users.xml修改。tomcat URL就是你希望把war包部署到的tomcat所在IP地址,最后面不需要再加斜杠/。
tomcat-users.xml中的用户名及密码默认是注释掉的,所以需要删除注释,也可以直接复制以下代码到</tomcat-users>之前。如果只是删除注释的话好像部署不会成功,还需要增加manager开头的三个role才可以。
- <role rolename="tomcat"/>
- <role rolename="role1"/>
- <role rolename="manager-gui" />
- <role rolename="manager-script" />
- <role rolename="manager-status" />
- <user username="tomcat" password="tomcat" roles="tomcat"/>
- <user username="both" password="tomcat" roles="tomcat,role1"/>
- <user username="role1" password="tomcat" roles="role1"/>
- <user username="deploy" password="tomcat" roles="manager-gui,manager-script,manager-status" />
4、最后需要启动远程机器上的tomcat服务器,由于不想这一步也需要手动操作,我的办法是在部署war包之前先执行启动tomcat脚本的操作,之后再执行部署。
我的部分代码,判断是否有包含tomcat-7.0.57/conf/logging.pro字段的进程,如果有则执行关闭tomcat,之后再判断一遍是否关闭成功,如果进程还存在则直接杀进程。
以下代码保存成ready.sh,不能忘记加执行权限:chmod +x ready.sh
if test $(ps -ef | grep tomcat-7.0.57/conf/logging.pro |wc -l) -eq 1thenecho "------------no running ,can't shutdown------------"elseecho $(ps -ef | grep tomcat-7.0.57/conf/logging.pro |wc -l)/usr/local/apache-tomcat-7.0.57/bin/shutdown.shecho "------------tomcat shutdowning--------------"sleep 30if test $(ps -ef | grep tomcat-7.0.57/conf/logging.pro |wc -l) -eq 1thenecho "------------no running ,can't kill------------"elseps -ef|grep tomcat-7.0.57/conf/logging.pro |cut -c 9-15|xargs kill -s 9echo "------------tomcat killing--------------"fifi
在部署war包之前需要执行的操作:
1、判断tomcat是否启动,启动则关闭;(中间也可以进行一些备份数据的操作)
2、休眠10s,给tomcat关闭的时间;
3、启动tomcat;
4、休眠20s,给tomcat启动的时间;
ps:tomcat服务器如果没有启动的话,部署就会因为找不到目标地址而报错。
5、最后直接点击job的立即构建即可,war包会自动部署到tomcat的webapp下联系客服