gitee+Jenkins+tomcat实现自动打包部署

主要实现使用Jenkins从gitee上自动编译打包部署java项目到tomcat,使用webhook来实现gitee项目上的代码变更自动触发打包编译部署java

1、环境准备git

主机名web

ip浏览器

安装服务tomcat

jenkinsjava-web

192.168.10.100ssh

Jenkins、jdk、mavenmaven

tomcatide

192.168.10.200工具

tomcat七、jdk

安装所需工具:

安装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,输入配置的用户名和密码登陆,登录成功显示以下页面

clipboard.png

二、配置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)一样不要选自动安装

clipboard1.png

clipboard2.png

配置完成后保存退出

三、安装插件

须要安装Generic Webhook Trigger、Deploy to container Plugin、Git plugin及Maven Integration plugin这四个插件

进入主页面选系统管理--》插件管理,进入插件管理页面,在可选插件选项卡下查找这四个插件,安装完成后须要重启Jenkins

clipboard3.png

四、配置gitee

gitee上已经建立好一个私有项目,而且跟Jenkins所在主机配置了ssh-key,能够用“git clone” gitee上的项目,测试项目为zrlog,一个Java写的开源博客


五、建立Jenkins部署项目

点击新建,建立一个maven项目(若是不是maven项目能够选自由风格项目)

clipboard4.png

点击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的用户。

clipboard5.png

添加完成后,Credentials选择刚才添加的git便可

clipboard6.png

若是Credentials配置错误,就会报错

clipboard7.png

在构建触发器下勾选Generic Webhook Trigger,给抓出来的数据起个变量名ref,抓取内容为$.ref(看码云的文档)

在Post content parameters后点击增长,variable填写ref,Expression填写$.ref,而后点选下边的JSONPath

clipboard8.png

好,稍微下来一点,咱们只须要获取POST数据,header和request不用理。接下来也很关键,定义过滤出来什么字串才触发这个任务。因此使用正则匹配,text为匹配出什么结果就触发这个任务,因而咱们填入刚才抓取临时存放的变量$ref,注意这里不是原始数据的$.ref。

^(refs/heads/master)$

clipboard9.png

在build中,配置maven执行命令”clean install -D maven.test.skip=true“

clipboard91.png

在构建后操做下,点击增长构建后操做,选择deploy war/ear to a container

WAR/EAR files填写“**/*.war”,container选择 tomcat 7.x(根据本身版本选择),点击Credentials后add,username和password根据tomcat中配置的填写便可,我这里都是tomcat

clipboard92.png

保存退出后,选择刚才添加的用户,Tomcat URL填写tomcat的IP地址便可,我这里是192.168.10.200:8080

clipboard93.png

这样Jenkins基本配置完成,保存退出

六、配置gitee的webhook

登录gitee,进入zrlog项目,点击项目名下最右边的管理选项卡,而后点击添加

clipboard94.png

进入添加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中的用户,不要搞混了,地址端口后边为固定写法,不能随便写,在构建触发器是有提示

clipboard95.png

另外,若是Jenkins是在内网部署的,须要把Jenkins端口映射到公网,Jenkins自己是在公网部署只要打开端口,须要gitee可以跟Jenkins通讯便可

clipboard96.png

   点击测试,返回ok就说明接口能用了,若是返回以下,则用户名密码可能没填或者没对。

1

2

3

4

{"status":"ok","data":{"triggerResults":{"ANY":"Did not find any jobs to trigger! 

The user invoking /generic-webhook-trigger/invoke must have read permission to any 

jobs that should be triggered. You may try adding http://user:passw@url... or configuring

 and passing an authentication token like ...trigger/invoke?token=TOKENHERE"}}}

3、测试

配置完成后,须要作下测试,是否配置成功

在gitee的zrlog项目下新建一个文件,查看Jenkins中的zrlog是否在执行构建部署

clipboard97.png

查看日志

clipboard98.png

clipboard99.png

最后显示部署成功,打开浏览器输入192.168.10.200:8080/zrlog-2.0.4,可以打开说明配置成功了

4、遇到的问题

安装配置完成后,测试时build没有问题,部署到tomcat时报错

eb8dea1eafb6e8a80ff73c92904afc5.png

没有部署成功。

后来查资料发现是tomcat的bug,Tomcat的版本是8.5.13,这个bug官方已经收到反馈,而且在8.5.14已经修复,测试的tomcat刚好是8.5.13版本,从官网从新下载最新版本,再次测试就没有问题了。

相关文章
相关标签/搜索