Jenkins部署war包到远程tomcat的webapps下

因为手动部署好麻烦,要先在eclipse更新代码,然后build一下,再把target下生成的war包复制到tomcat的webapps下,启动tomcat。

首先需要下载一个Jenkins的插件:Deploy to container Plugin ,可以在Jenkins的系统管理->插件管理->可选插件中查找

安装完成后重启Jenkins,在增加构建后操作步骤中会多出一个选项Deploy war/ear to a container。

Jenkins部署war包到远程tomcat的webapps下_第1张图片

首先新建一个任务,只需要配置代码获取方式,build命令和部署war包配置即可。

1.代码获取,我们是用SVN方式获取代码的。

Jenkins部署war包到远程tomcat的webapps下_第2张图片


2.build命令。

Jenkins部署war包到远程tomcat的webapps下_第3张图片

3.war包部署。

Jenkins部署war包到远程tomcat的webapps下_第4张图片

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中的用户名及密码默认是注释掉的,所以需要删除注释,也可以直接复制以下代码到之前。如果只是删除注释的话好像部署不会成功,还需要增加manager开头的三个role才可以。

  
  
  
  
  
  
  
  
  

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 1
then
echo "------------no running ,can't shutdown------------"
else
echo $(ps -ef | grep tomcat-7.0.57/conf/logging.pro |wc -l)
/usr/local/apache-tomcat-7.0.57/bin/shutdown.sh
echo "------------tomcat shutdowning--------------"
sleep 30
if test $(ps -ef | grep tomcat-7.0.57/conf/logging.pro |wc -l) -eq 1
then
echo "------------no running ,can't kill------------"
else
ps -ef|grep tomcat-7.0.57/conf/logging.pro |cut -c 9-15|xargs kill -s 9
echo "------------tomcat killing--------------"
fi
fi

在部署war包之前需要执行的操作:

1、判断tomcat是否启动,启动则关闭;(中间也可以进行一些备份数据的操作)

2、休眠10s,给tomcat关闭的时间;

3、启动tomcat;

4、休眠20s,给tomcat启动的时间;

Jenkins部署war包到远程tomcat的webapps下_第5张图片

ps:tomcat服务器如果没有启动的话,部署就会因为找不到目标地址而报错。

5、最后直接点击job的立即构建即可,war包会自动部署到tomcat的webapp下

你可能感兴趣的:(tomcat,Jenkins)