一、背景

看过我 Jenkins 系列博文的同学应该知道,之前的 java 程序是通过 ssh 发布到服务器上面的,通过的是 shell 脚本,但是有些时候,我们并没有服务器的权限,只有对应 tomcat 的管理权限,直接通过 tomcat 的管理控制台发布 war 包程序,这也叫做热发布,发布过程中不需要重启 tomcat。

具体该如何操作,请往下看。

二、tomcat 配置

1、开启管理用户

  • tomcat 默认没有这样的用户,需要在TOMCAT_HOME/conf/tomcat-users.xml添加manager-script组和相应的用户,增加如下几行:

    <role rolename="manager-script"/>
    <user username="wzlinux" password="wzlinux" roles="manager-script"/>
    <role rolename="manager-gui"/>
    <user username="wzadmin" password="wzlinux" roles="manager-gui"/>
  • 或者为了简便,直接弄一个权限很大的账号,比如下面:
    <role rolename="manager"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="admin"/>
    <user username="wzlinux" password="wzlinux" roles="admin,manager,manager-script,manager-gui"/>

注:配置好后需要重启Tomcat才能生效。

2、登陆 tomcat 后台

只有角色是manager-gui的用户才有管理后台的权限,而 Jenkins 的部署只需要角色为manager-script即可。

访问我们的内网服务器地址 http://10.0.0.11:8081/manager ,输入账号密码登陆查看。

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

我们可以看到正在运行的项目,我们可以通过undeploy来删除,然后通过我们下面的方法进行部署。

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

三、Jenkins 配置

1、下载插件

下载插件Deploy to container

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

2、添加 Deploy 构建

打开我们之前的 wenjuan 项目,在构建后操作选择Deploy war/ear to a container

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

3、配置 deploy 构建

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

WAR/EAR files:是 war 包的相对路径(相对于工作区路径,即在工作区中 war 包的相对路径),如我的 maven 执行完成之后会在工作区的 target 目录下生成项目 .war,所以这里我的路径就写 target\项目.war。
Content path:tomcat 的发布路径,即使用 localhost/(content path设置的名字)来访问项目。
Containers:选择 Tomcat 7.x,Credentials 添加我们上面 tomcat 添加的用户,Tomcat URL 即为我们正常访问 tomcat 的页面的地址。
Deploy on failure:是发生错误的时候是否发布到tomcat。

四、测试结果

1、查看构建日志

通过日志可以看到部署成功。
持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

2、查看服务器

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

3、查看 tomcat 后台

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序(九)

没有任何问题,热部署成功。