gitee+Jenkins+tomcat实现自动打包部署
主要实现使用Jenkins从gitee上自动编译打包部署java项目到tomcat,使用webhook来实现gitee项目上的代码变动自动触发打包编译部署一、环境准备
主机名
ip
安装服务
jenkins
192.168.10.100
Jenkins、jdk、maven
tomcat
192.168.10.200
tomcat7、jdk
安装所需工具:
安装Jenkins
安装jdk、maven
安装tomcat
二、配置环境
1、安装配置tomcat manager
修改conf/tomcat-users.xml
添加一下内容:
说明:添加了admin-gui、manager-gui、manager-script 3个角色,配置一个tomcat用户,密码为tomcat,拥有这3个角色的权限(用来登陆到manager页面)
启动tomcat程序
bin/startup.sh
测试配置用户是否能够登陆
浏览器打开192.168.10.200:8080/manager,输入配置的用户名和密码登录,登陆成功显示如下页面
http://s1.运维网.com/images/20180920/1537415858179451.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/3d0379b298d34994a269bb22ba82fa87/clipboard.png
2、配置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)同样不要选自动安装
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/2d404decc5c3457eb6cf68185e9b037e/clipboard.png
http://s1.运维网.com/images/20180920/1537415906212889.png
http://s1.运维网.com/images/20180920/1537415915982902.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/16b9a64d3d5740ff89a0dd6a9b5d1f25/clipboard.png
配置完成后保存退出
3、安装插件
需要安装Generic Webhook Trigger、Deploy to container Plugin、Git plugin及Maven Integration plugin这四个插件
进入主页面选系统管理--》插件管理,进入插件管理页面,在可选插件选项卡下查找这四个插件,安装完成后需要重启Jenkins
http://s1.运维网.com/images/20180920/1537415926992137.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/2d3649a201324d53a08cc5aabe5b5f08/clipboard.png
4、配置gitee
gitee上已经创建好一个私有项目,并且跟Jenkins所在主机配置了ssh-key,可以用“git clone” gitee上的项目,测试项目为zrlog,一个Java写的开源博客
5、创建Jenkins部署项目
点击新建,创建一个maven项目(如果不是maven项目可以选自由风格项目)
http://s1.运维网.com/images/20180920/1537415951775899.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/ad0d41997218454dbb820c52c3acf5ef/clipboard.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的用户。
http://s1.运维网.com/images/20180920/1537415968651685.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/c4a52269b8354ccabca6ce964939fbdd/clipboard.png
添加完成后,Credentials选择刚才添加的git即可
http://s1.运维网.com/images/20180920/1537415984620124.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/02fb108535c7482b89a71f9eba2e1e88/clipboard.png
如果Credentials配置错误,就会报错
http://s1.运维网.com/images/20180920/1537416003425505.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/54c1b7cf6a6a41cf96f7093dadeac3de/clipboard.png
在构建触发器下勾选Generic Webhook Trigger,给抓出来的数据起个变量名ref,抓取内容为$.ref(看码云的文档)
在Post content parameters后点击增加,variable填写ref,Expression填写$.ref,然后点选下边的JSONPath
http://s1.运维网.com/images/20180920/1537416019517046.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/168f2992fe874bfba3c8ed480e9b7523/clipboard.png
好,稍微下来一点,我们只需要获取POST数据,header和request不用理。接下来也很关键,定义过滤出来什么字串才触发这个任务。所以使用正则匹配,text为匹配出什么结果就触发这个任务,于是我们填入刚才抓取临时存放的变量$ref,注意这里不是原始数据的$.ref。
^(refs/heads/master)$
http://s1.运维网.com/images/20180920/1537416043403996.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/a63fbf24c8a34acd8321567f9ef85fe4/clipboard.png
在build中,配置maven执行命令”clean install -D maven.test.skip=true“
http://s1.运维网.com/images/20180920/1537416074608043.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/2be837e37a874df2b303a032e88edb72/clipboard.png
在构建后操作下,点击增加构建后操作,选择deploy war/ear to a container
WAR/EAR files填写“**/*.war”,container选择 tomcat 7.x(根据自己版本选择),点击Credentials后add,username和password根据tomcat中配置的填写即可,我这里都是tomcat
http://s1.运维网.com/images/20180920/1537416095543200.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/ae74ee8cbfb44208bf2a31e34c9185ba/clipboard.png
保存退出后,选择刚才添加的用户,Tomcat URL填写tomcat的IP地址即可,我这里是192.168.10.200:8080
http://s1.运维网.com/images/20180920/1537416112970942.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/8960b1ca8ff3436f9cb90f9bd1cf3ae0/clipboard.png
这样Jenkins基本配置完成,保存退出
6、配置gitee的webhook
登陆gitee,进入zrlog项目,点击项目名下最右边的管理选项卡,然后点击添加
http://s1.运维网.com/images/20180920/1537416126359607.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/eb63a7ffb3584640b016a4ede1f1eceb/clipboard.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中的用户,不要搞混了,地址端口后边为固定写法,不能随便写,在构建触发器是有提示
http://s1.运维网.com/images/20180920/1537416140665999.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/5f77afe7d0124ab6b05e66809c46d94b/clipboard.png
另外,如果Jenkins是在内网部署的,需要把Jenkins端口映射到公网,Jenkins本身是在公网部署只要打开端口,需要gitee能够跟Jenkins通信即可
http://s1.运维网.com/images/20180920/1537416155495552.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/1f4a0d4526d54b62b01f29e4760f4eee/clipboard.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"}}}
三、测试
配置完成后,需要做下测试,是否配置成功
在gitee的zrlog项目下新建一个文件,查看Jenkins中的zrlog是否在执行构建部署
http://s1.运维网.com/images/20180920/1537416175622132.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/8a3a166afc0948b992284d5786be8cf5/clipboard.png
查看日志
http://s1.运维网.com/images/20180920/1537416195753747.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/07b198ecd09845d28f5ede33beb643d9/clipboard.png
http://s1.运维网.com/images/20180920/1537416204300135.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/c38075e3533d48e3b0c8bf7d89bb6dca/clipboard.png
最后显示部署成功,打开浏览器输入192.168.10.200:8080/zrlog-2.0.4,能够打开说明配置成功了
四、遇到的问题
安装配置完成后,测试时build没有问题,部署到tomcat时报错
http://s1.运维网.com/images/20180920/1537416216794415.png
http://blog.运维网.com/13339566/C:/Users/wangyankun.FENGYUAN/AppData/Local/YNote/data/wang035759984@163.com/4cae5f514f4f40be9b485f260f5ad8af/eb8dea1eafb6e8a80ff73c92904afc5.png
没有部署成功。
后来查资料发现是tomcat的bug,Tomcat的版本是8.5.13,这个bug官方已经收到反馈,并且在8.5.14已经修复,测试的tomcat恰好是8.5.13版本,从官网重新下载最新版本,再次测试就没有问题了。
好多图都看不到啊 什么鬼 谢谢楼主分享啊
感谢楼主的分享! 回复一下看看
页:
[1]