主要实现使用Jenkins从gitee上自动编译打包部署java项目到tomcat,使用webhook来实现gitee项目上的代码变更自动触发打包编译部署java
1、环境准备git
安装所需工具:
安装Jenkins
安装jdk、maven
安装tomcat
2、配置环境
一、安装配置tomcat manager
修改conf/tomcat-users.xml
添加一下内容:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-script"/>
说明:添加了admin-gui、manager-gui、manager-script 3个角色,配置一个tomcat用户,密码为tomcat,拥有这3个角色的权限(用来登录到manager页面)
启动tomcat程序
bin/startup.sh
测试配置用户是否可以登录
浏览器打开192.168.10.200:8080/manager,输入配置的用户名和密码登陆,登录成功显示以下页面
二、配置Jenkins的jdk和maven环境
Jenkins安装完成后,因为部署的项目是java-web程序,因此须要jdk和maven环境
jdk和maven安装目录分别是/usr/local/jdk1.8.0_144和/usr/local/maven
首先进入Jenkins系统管理--》Global Tool Configuration
选择“jdk安装” --》别名自定义(建议标识jdk版本)--》JAVA_HOME(/usr/local/jdk1.8.0_144) 不要选自动安装
而后选择“maven安装”--》name(自定义)--》MAVEN_HOME(/usr/local/maven)一样不要选自动安装
配置完成后保存退出
三、安装插件
须要安装Generic Webhook Trigger、Deploy to container Plugin、Git plugin及Maven Integration plugin这四个插件
进入主页面选系统管理--》插件管理,进入插件管理页面,在可选插件选项卡下查找这四个插件,安装完成后须要重启Jenkins
四、配置gitee
gitee上已经建立好一个私有项目,而且跟Jenkins所在主机配置了ssh-key,能够用“git clone” gitee上的项目,测试项目为zrlog,一个Java写的开源博客
五、建立Jenkins部署项目
点击新建,建立一个maven项目(若是不是maven项目能够选自由风格项目)
点击ok,进入项目配置页面,描述能够简单介绍下这个项目
源码管理选择git,填写项目地址(git@gitee.com:wangyank/zrlog.git),因为gitee上的zrlog项目是私有的,还须要配置密钥,点击Credentials后的add
类型选择ssh username with private key,username输入git,Private Key填写Jenkins主机的root用户私钥(/root/.ssh/id_rsa),root是gitee上配置的ssh key的用户。
添加完成后,Credentials选择刚才添加的git便可
若是Credentials配置错误,就会报错
在构建触发器下勾选Generic Webhook Trigger,给抓出来的数据起个变量名ref,抓取内容为$.ref(看码云的文档)
在Post content parameters后点击增长,variable填写ref,Expression填写$.ref,而后点选下边的JSONPath
好,稍微下来一点,咱们只须要获取POST数据,header和request不用理。接下来也很关键,定义过滤出来什么字串才触发这个任务。因此使用正则匹配,text为匹配出什么结果就触发这个任务,因而咱们填入刚才抓取临时存放的变量$ref,注意这里不是原始数据的$.ref。
^(refs/heads/master)$
在build中,配置maven执行命令”clean install -D maven.test.skip=true“
在构建后操做下,点击增长构建后操做,选择deploy war/ear to a container
WAR/EAR files填写“**/*.war”,container选择 tomcat 7.x(根据本身版本选择),点击Credentials后add,username和password根据tomcat中配置的填写便可,我这里都是tomcat
保存退出后,选择刚才添加的用户,Tomcat URL填写tomcat的IP地址便可,我这里是192.168.10.200:8080
这样Jenkins基本配置完成,保存退出
六、配置gitee的webhook
登录gitee,进入zrlog项目,点击项目名下最右边的管理选项卡,而后点击添加
进入添加webhook页面,url须要填写Jenkins的url(域名或者公网ip)
URL格式为 http://有读权限的用户名:该用户名密码@jenkis地址/generic-webhook-trigger/invoke
如: http://admin:tusmind123@http://10.160.59.236:8990/generic-webhook-trigger/invoke
该处用户名和密码为Jenkins中的用户,不要搞混了,地址端口后边为固定写法,不能随便写,在构建触发器是有提示
另外,若是Jenkins是在内网部署的,须要把Jenkins端口映射到公网,Jenkins自己是在公网部署只要打开端口,须要gitee可以跟Jenkins通讯便可
点击测试,返回ok就说明接口能用了,若是返回以下,则用户名密码可能没填或者没对。
3、测试
配置完成后,须要作下测试,是否配置成功
在gitee的zrlog项目下新建一个文件,查看Jenkins中的zrlog是否在执行构建部署
查看日志
最后显示部署成功,打开浏览器输入192.168.10.200:8080/zrlog-2.0.4,可以打开说明配置成功了
4、遇到的问题
安装配置完成后,测试时build没有问题,部署到tomcat时报错
没有部署成功。
后来查资料发现是tomcat的bug,Tomcat的版本是8.5.13,这个bug官方已经收到反馈,而且在8.5.14已经修复,测试的tomcat刚好是8.5.13版本,从官网从新下载最新版本,再次测试就没有问题了。