环境准备

本次整合使用jenkins发布github项目到服务器的tomcat,所以需要准备好git、jdk、maven环境,这里列下我的环境版本

JDK:1.8.0.11

Maven:3.6.3

Git:1.8.3.1

能查看各组件版本号说明环境准备OK

jenkins java项目打包 docker镜像 jenkins打包web项目_tomcat

jenkins全局设置

系统管理 -> 全局配置

jenkins java项目打包 docker镜像 jenkins打包web项目_war包_02

  1. 配置jdk,别名任取

jenkins java项目打包 docker镜像 jenkins打包web项目_war包_03


2. 配置git,别名任取git目录根据安装方式可能会有差别,可通过whereis git命令查看

jenkins java项目打包 docker镜像 jenkins打包web项目_tomcat_04


3. 配置maven,别名任取

jenkins java项目打包 docker镜像 jenkins打包web项目_jenkins_05

安装插件

部署war包到tomcat,需要额外安装插件Deploy to container Plugin
系统管理 -> 插件管理 ->可选插件
在过滤栏中输入Deploy to container Plugin,选中后直接安装

新建项目

新建项目,输入项目名,选择freestyle project

jenkins java项目打包 docker镜像 jenkins打包web项目_tomcat_06

  1. 源码管理
    这里首选需要你在github上有一个web项目,repository url即是你项目的地址,credentials是你github的账号,指定你要发布的分支
  2. jenkins java项目打包 docker镜像 jenkins打包web项目_jenkins_07

  3. 构建
    选择你的maven组件,指定目标,这里用 clean install
  4. jenkins java项目打包 docker镜像 jenkins打包web项目_github_08

  5. 构建后操作
    war/file:填你项目install后target里war包的路径
    context path:的名字是打包到tomcat的war包名,也是你将来访问项目用的项目名,可以自定义
    添加containers:选择tomcat8,credentials为tomcat的账号密码(之所以要配置这个账号,是因为jenkins需要知道打包后把war包部署在什么地方,会利用tomcat的manager),tomcat url为tomcat启动后的根路径
    此处需要为tomcat设置管理账号:
    tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
        <role rolename="manager-script"/>
        <role rolename="manager-jmx"/>
        <role rolename="manager-status"/>
        <user username="root" password="root" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

jenkins java项目打包 docker镜像 jenkins打包web项目_tomcat_09

该步骤配置完毕,jenkins打包并部署所需要的环境就准备完毕(从github的指定路径拉取项目、通过maven打包、将打好的包部署到指定tomcat)

至此发布项目就没问题了,点击立即构建:

jenkins java项目打包 docker镜像 jenkins打包web项目_github_10


控制台打印SUCCESS,服务器的webapps目录下生成了最新的war包,项目可以正常访问

jenkins java项目打包 docker镜像 jenkins打包web项目_github_11

jenkins java项目打包 docker镜像 jenkins打包web项目_github_12

jenkins java项目打包 docker镜像 jenkins打包web项目_war包_13

可能遇到的坑

webapps需要保留manager项目,如果没有,jenkins发布会报如下错误:

jenkins java项目打包 docker镜像 jenkins打包web项目_github_14


由于上面只配置了tomcat url,并没有明确指明将打包好的文件传到哪个目录里,那么jenkins是如何完成这个步骤呢,其实是利用了tomcat的manager项目,我们根据之前的经验,初始化tomcat的webapps有几个目录,examples,manager,ROOT等等,习惯上我们会在使用的时候将这些目录清空,但是这里要注意保留manager,因为jenkins会利用这个manager项目定位到tomcat的位置,同时要注意设置tomcat的管理员账号

如果是从docker里pull了tomcat的最新镜像,有可能webapps目录下是空的,可以从其他地方拷贝manager到webapps下