业务背景
我们在开发的时候,特别是前后端分离的时候,前端需要我们后端提供的API接口,可能需要每次有一个接口的变动都需要重新部署到dev
环境上,例如:最常见的Git工作流的方式,develop和master是分开的,在开发过程中提交的代码首先合并到develop上,如下图:
如果,使用Jenkins做集成工具,每次有代码合并的时候,也需要手动的去构建:
这是一件很繁琐的事情,如何实现当代码自动提交到develop分支的时候自动触发构建功能,目前,有效的解决方案是使用“钩子”。
钩子功能(callback),是帮助用户push了代码后,自动回调一个您设定的http地址。 这是一个通用的解决方案,用户可以自己根据不同的需求,来编写自己的脚本程序(比如发邮件,自动部署等)。
准备工作
1、这里假设你已经对Jenkins有一定的了解和使用,如果是新手的话,可以参考文章:
使用Jenkins配置Git+Maven的自动化构建:
2、“码云 Git@OSC”项目托管地址,这里假设我自己的项目:(私有项目)
3、安装Generic Webhook Trigger插件
在“系统设置–插件管理–可选插件”界面搜索:Generic Webhook Trigger,可以看到,点击安装,然后重启。
这里是我已经装过,所以在“已安装”界面给大家看一下!
插件地址:https://wiki.jenkins-ci.org/display/JENKINS/Generic+Webhook+Trigger+Plugin
搭建工作
一、创建Job
这里我的是Maven项目,所以直接使用下图中红色步骤1和2
二、配置Job
下边依次配置是:General–>源码管理–>构建触发器–>Optional filter–>构建环境–>Pre Steps–>Build–>Post Steps–>构建设置–>构建后操作 的配置。
(1)General
(2)源码管理
注意:这里指定 Build的分支为develop,只是为了在开发的时候部署开发的代码,如果没有直接就是master
(3)构建触发器
直接勾选使用插件即可!
(4)Optional filter、构建环境、Pre Steps这三个部分没有进行配置,如下:
(5)Build、Post Steps、E-mail Notification
a、指定根pom文件;
b、这里由于我的项目是多环境的,如下:
我需要编译的是dev环境并且跳过测试 ,所以填入命令:
clean install -Pdev -Dmaven.test.skip=true -e
如果没有环境配置的话,直接忽略就可以!
c、选中:Run only if build succeeds
(6)构建后操作
(7)点击Apply 保存,到此Job配置完成!
三、配置用户和Security
(1)在“系统管理–管理用户–用户列表–admin处点击进去–左边侧边栏–设置”设置用户API Token!找到等会会用!
可以进行Change!
(2)然后在“系统设置->Configure Global Security”,去掉防止跨站点请求伪造的勾,这样我们就可以在浏览器和码云的webhook访问到api的地址了,不然我们把用户名和密码放到url 中,还是不能访问。
四、配置码云WebHooks
找到WebHooks配置界面,在POST地址框中输入如下格式内容:
http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke
具体如下:
a、User ID:既是“三(1)”中的User ID,我的是admin;
b、API Token:既是“三(1)”中的API Token,例如我的是8c1d11114ab111111111fdf21111a6a97;
c、Jenkins IP地址:就是你的Jenkins的服务器IP地址,这个必须是公网IP地址,例如我的是210.41.223.54;
d、端口:就是Jenkins服务器的端口;
e、后边的内容就是Generic Webhook Trigger 插件的地址,无需改变;
例如我的配置为:
http://admin:8c1d11114ab111111111fdf21111a6a97@210.41.223.54:8010/generic-webhook-trigger/invoke
点击提交之后,界面如下:
URL后边的密码是,是jenkins用户admin的账户密码。
然后点击“测试” 看一下Jenkins是否开始运行!
至此!全部配置已经完成,如有疑问欢迎留言!共同学习!