持续集成(CI)的整个流程目标就是实现自动的拉取代码、编译、打包、部署到远程服务器、自动执行测试,自动发送邮件,从而能够排除人的因素,提高测试的效率。本文我们就介绍如果基于github的源码管理库实现以上流程。以下几基础的配置和插件的安装请参考前4篇文章。
通过ngork,将IP暴露到网络中
GitHub收到push动作后要主动通知Jenkins,所以Jenkins所在服务器一定要有外网IP,否则GitHub无法访问,解决方法:下载ngrok,将IP暴露到网络上。步骤如下:
下载
登录到https://ngrok.com/download下载grok压缩包,选windows版本
解压缩
将ngrok-stable-windows-amd64.zip文件解压到指定的目录,比如:F:\ngrok-stable-windows-amd64
获取token
切换到下载页面,单击以下链接,获取token(注意:此步要翻墙)
认证token
切换到解压后的目录,执行认证ngrok authoken
(token:3LoDHiNZAGSc3Cdi9ThEW_75ZCKKBh73UCHDc4WdAy)
在解压后的目录下启动
切换到ngrok所在的目录,启动命令行,执行:ngrok http 8080(8080是tomcat的监听端口),拷贝forwarding指示的ip,后续会用到。注意:cmd的窗口不要关闭
注意:
关机重启后就要重新进入ngrok所在的目录执行ngrok http 8080命令生成新的IP,同时jenkins和github中的webhook对应的ip也要修改
github中配置webhook
在整个流程中关键的一步就是github监控到指定的仓库有push事件时,就会通知jenkins启动与该仓库关联的任务自动构建,这就需要用到webhook。
webhook是一个HTTP回调,当有指定事件,比如push事件发生时,github可以发起一个HTTP请求到webhook配置的URL通知jenkins发生了push事件,这样只要开发人员提交代码后,都会触发编译、打包、发布以及测试任务的构建。
需要在GitHub中配置webhook,然后在Jenkins中添加此webhook,流程如下:
登录到github,进入到需要监控的仓库,点击settings
点击Webhooks–>Add webhooks
设置Payload URL
填写jenkins的服务所在IP地址+jenkins/github-webhook/,如:
https://7f39f40b.ngrok.io/jenkins/github-webhook/
标黄的部分就是用ngrok生成的IP地址,其它值默认即可。
jenkins中配置Hook URL
进入到jenkins,单击系统管理–>系统设置
找到GitHub,单击Advanced…
添加webhook
注意:post地址一定是http://your_jenkins_url/github-webhook/ ,不能去掉最后的“/”
和github中Payload URL的保持一致
单击页面最底部的save按钮
构建自动触发的项目(git+sprintboot+maven)
项目源代码是sprintboot实现的,编译打包等操作由maven完成。项目建立过程如下:
进入jenkins首页,单击新建任务
输入任务名称:比如build_interface
General:
Source Code Management:
url为github上的地址,获取方法:进入github仓库的按如下方法获取url。此仓库就是开发提交的代码仓库,也就是接下来打包的源码。
可选配置(Advanced clones behaviours):
构建触发器
Build
Root POM:指定构建时的pom.xml,windows下可以不写绝对路径。如果想配置绝对路径的话一般指定jenkins的工作空间即可,默认的情况下:
C:\Users\kongsh.jenkins\workspace\build_interface\pom.xml
高亮显示的分别代表你电脑的用户名和jenkins中的项目名称
Goals and options:以下3种任选其一:
clean package -DskipTests=true
clean install package ‘-Dmaven.test.skip=true’
clean install -Dmaven.test.skip=true
说明:package是打包,不发布到本地库,install=package+发布到本地库。清除class文件,打包构建,-DskipTests跳过单元测试。不配置这一项的话war包发布成功后,第2次构建再访问返回404
构建设置
构建后操作
我们选择Deploy war/ear to a container的方式,将打包后的war发布到tomcat的webapps目录中,步骤如下:
WAR/EAR files:war包所在的路径,相对于jenkins项目的工作空间
Context path:远程tomcat的webapps目录解压后的文件名
注意:用户名和密码要和tomcat安装目录下,conf\tomcat-users.xml中的一致
保存设置
以上配置完成后,可以在jenkins首页可以看到所有构建的项目
红色表示构建失败;蓝色表示构建成功
查看详细的构建过程:
看到构建过程中的信息:
修改web工程代码并push到Github
触发项目自动构建
在jenkins首页,或者build_interface任务页面可以看到build_interface任务的自动构建:
执行日志如下: