1、前言
首先出于提升本身技术水平和琢磨能作点什么能提升工做效率,上线工做实在无聊、重复(手动编译、打包,传包,重启),因而就想到了jenkins,jenkins持续集成已经不是什么新鲜的话题,网上文章一大堆,俗话说天下文章一大抄,基本上就是那三五篇,相信要是之前没接触过的人没有两三天是弄不出来的,特别是身为运维岗,一些关于开发的东西仍是不太懂,在搭建以前什么持续集成、持续构建、持续部署这些概念真是搞不懂,也许是我比较愚笨,在我研究的这段时间里,真是一步一个坑,想一想这人品,写这个的目的不为何,但愿后来者少踩坑,也为本身作个记录。html
2、环境
一、粘一副从网上看见的我认为好理解的图java
二、服务器环境git
一台jenkins服务器:192.168.4.117web
一台gitlab服务器:192.168.4.81apache
一台测试服务器:192.168.4.91vim
3、环境搭建
一、gitlab安装:因为以前已经写过gitlab安装的博客,在此就不重复写了,把地址粘出来:http://www.cnblogs.com/lidong94/p/7161717.html浏览器
二、jenkins安装tomcat
(1)安装能够用war包也能够用rpm包,可是我的认为仍是war包好用方便,首先下载好jenkins的war包,地址:http://mirrors.jenkins.io/war-stable/2.32.3/服务器
(2)安装jdk,建议使用1.8以上的版本,安装好jdk以后执行:vim /etc/profile 在这个文件最后加入以下代码:app
export JAVA_HOME=/usr/local/jdk1.8.0_131 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
(3)而后执行如下命令,这样是使用默认的8080端口,也能够修改使用别的端口,固然这个war包也能够放到tomcat里启动,这里就不介绍tomcat启动的方式了。
java -jar jenkins.war
(4)到这里jenkins就安装成功了,能够经过浏览器访问:http://192.168.4.117:8080
4、jenkins配置
(1)第一次访问时会出现这个页面
cat标红的那个路径,把内容粘到文本框内,点击continue,稍等一分钟以后会进入如下页面
点击第一幅图安装插件。PS:这两幅图的区别就是一个是自定义安装插件,一个本身选择要安装的插件,建议选择第一个,后边用到哪些在本身安装
等待十分钟左右插件安装完成,插件安装完成以后出现以下图
建立jenkins的第一个用户,而后点击 save and finish
点击开始使用jenkins
这就是jenkins的主界面,接下来开始jenkins之旅
5、jenkins界面配置
相信好多人到这一步以后就不明白该怎么作了,我曾经搭建过四五次到这里,可是每次新建项目的时候就懵懵懂懂的,稀里糊涂的建一个项目,而后就搁置了,仍是那句话,作什么事情以前先想明白本身想要什么,好了,废话很少说,咱们的初衷就是要实现只要开发提交代码到gitlab,jenkins就会自动检测到而且自动进行构建(合并、打包),构建完成以后将打好的包(war、jar包均可以)经过jenkins的插件传到tomcat的webapps目录下,而后重启tomcat,实现自动打包部署。
(1)首先咱们须要配置jenkins的全局配置,包括(jdk、maven)
点击系统管理-----global tool configuration
进去以后以下图
maven配置默认便可,jdk配置别名随便写,java_home就是jdk的家目录,不知道的话可使用java -version查询
git设置如上图所示,接下来配置maven,安装maven也能够在这里自动安装也能够本身下载安装,可是建议本身下载安装,下载地址:wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz下载完成解压便可不须要过多操做,而后使用mvn -v查看安装是否成功及安装信息,个人安装信息如图记住这个路径,这个路径须要在下图的maven home 配置
以上这些配置全都在global tool configuration里边,配置完点击保存
(2)接下来配置ssh链接信息,首先先安装ssh插件:publish over ssh
点击系统管理----管理插件
点击进来以后以下图,点击可选插件,而后在过滤文本框处输入publish over ssh ,把前面的复选框选中以后点击直接安装
安装完成后以下图,勾选安装完后重启jenkins,这个插件就会生效,因为我这个插件已经安装,这个图只是一个示例
安装完成后接下来配置ssh,也就是要上传的测试服务器ssh信息
首先咱们先要在jenkins服务器上生成秘钥,而后利用秘钥要进行免密登陆
在jenkins服务器上执行ssh-keygen -t rsa,一路回车就能够 一路回车的话密码为空,这样就在/root/.ssh/下生成的两个文件id.rsa(私钥)和id.rsa.pub(公钥),咱们须要把公钥的内容写到测试服务器(tomcat服务器上)的/root/.ssh/authorized_keys文件中 若是没有就新建一个,接下来咱们开始配置
点击系统管理---系统设置
详细解释:Passphrase是指在生成秘钥的时候设置的密码,因为咱们都是一路回车下来的因此此处不用写
path to key是指私钥的位置/root/.ssh/id.rsa
key是指私钥的内容 path to key 和key任选其一便可
name是指你要远程到tomcat的名称 随便写就能够,后期为了区分,因此我写了测试服务器
hostname是指测试服务器的ip
username是指测试服务器的用户
remote directory是指要放到测试服务器的目录,这里写tomcat的部署目录
点第一张图左下角的高级能够修改端口,点击test configuration能够测试链接 ,以下图就是测试成功,说明咱们如今已经可使用jenkins链接服务器了
(4)如今jenkins已经能够和远程服务器通讯了,可是还没和gitlab连通,接下来咱们配置gitlab和jenkins的连通,首先先安装gitlab相关插件,关于插件安装上面已经写过
接下来咱们新建一个job,由于只有先建了job才能和gitlab连通,以下图,这里填写一个名字如test,选择构建一个自由风格的软件项目,点击ok
点击完以后以下图,描述这块记得写上,最开始这块没写,在构建项目的时候会有报错,报不能配置name[ ],这里写上就行了,
而后点击源码管理以下图,咱们选择git,repository url 写gitlab仓库的地址,credentials是指信任,咱们须要在gitlab中添加jenkins的公钥 ,在下图的key中填写jenkins服务器的公钥,title处填写jenkins,而后在到jenkins上就能够看到credentials处能够选择jenkins了,而后点击构建触发器选项卡
点击触发器选项卡以后以下图,咱们点击Build when a change is pushed to GitLab. GitLab CI Service URL: http://192.168.4.117:8080/project/test,记住这个url地址,待会咱们须要在gitlab上配置 ,而后点击构建选项卡 构建环境暂不配置,
点击构建选项卡以后以下图:maven version处选择咱们在global tool configuration处配置的maven名称 goals处填写maven命令,由于咱们要打包,因此填写clean package,不懂的能够去学一下maven命令,而后点击构建后操做选项卡
点击构建后选项卡以后以下图,选择send build artifacts over ssh ,name处选择咱们配置的测试服务器,transfers这里特别须要注意,我在这边卡了大半天,由于网上写的文章含糊不清 source files 处填写想要传到远程服务器的东西 ,能够是目录、war包、jar包等均可以,这个路径是至关于workspace的路径 workspace目录能够在/root/.jenkins/workspace/找到因此说这里不用写/root/.jenkins/workspace/ 由于咱们构建完的war包或者jar包在/root/.jenkins/workspace/job名/target/下因此这里能够写target/war包名.war或者**/*.war,
remove prefix是指当把war包传到服务器的时候去掉source files处填写的war包以前的路径,要是不去除的话会在tomcat的webapps建一个target target之下才是war包,这固然不是咱们想要的
remove directory 是指远程到服务器的目录 这个在这就不配置了 由于咱们在系统设置处已经配置 这边直接调用就能够
exec command是指传过去包以后执行的命令,这里也能够调用脚本,
而后点击保存就能够了这样咱们就建完了一个job,有的人可能会想起来还没配置gitlab,good,还记得建job的时候要记住的那个url地址吗,接下来咱们须要在gitlab中找到web hooks这个选项,不一样的gitlab web hooks在不一样的地方 ,个人是在下图点击integrations
点击integrations后以下图,须要把jenkins的url:http://192.168.4.117:8080/project/test填到此处,而后点击添加web hooks,这个web hooks的做用就是jenkins检测到gitlab有代码提交就会触发jenkins进行构建
到此,jenkins自动打包,上传就配置完成了,接下来咱们验证一下,我提交代码到gitlab一下,控制台输出以下,
咱们到测试服务器的webapps下验证以下,jar包已经传到tomcat下了
jenkins+Gitlab+maven+tomcat实现自动集成、打包、部署