1简介
如果你想在gitlab中做一些操作后去触发一些事情,比如打包,sonar扫描等,本文介绍Jenkins如何接收gitlab的webhook。Jenkins接收Gitlab Hook有两种插件,一个是叫Gitlab Plugin,另外一个叫Gitlab Hook Plugin。两者的区别在于Gitlab Plugin不可以接收gitlab的参数,而Gitlab Hook Plugin可以。
2 Gitlab Plugin
1.首先在插件市场安装插件Gitlab Hook Plugin
-
然后回到任务配置中,在构建触发器下面会多一条,URL后面的地址就是在gitlab上配置的请求地址。
3.勾选这一条展开之后,如下图所示,可以配置接收什么样的动作。最后点击保存,在gitlab上配置好地址就可以。
3.Gitlab Hook Plugin
1.同样是到Jenkins的插件管理里面搜索Gitlab Hook Plugin并安装。
2.然后回到任务配置中,在构建触发器下面会多一条
3.展开之后有很多选项下面介绍一些常用的
第一块如下图。
第一行HTTP requests后面的地址是在gitlab创建webhook时添加的,中间JENKINS_URL是Jenkins的地址,注意不要后面的任务地址,例如:http://localhost:8080/generic-webhook-trigger/invoke
第二行There are example configurations in the Git repository.后面链接是一些例子,里面有github,gitlab各种情况的数据返回,如何接参数。
再往下就是配置需要接收的参数。
*variable 是起一个变量名
*Expression 是传过来的参数值,大概的格式为
*SONPath是解析json,Xpath解析xml,数据格式是啥就选啥。
*Value filter 是正则过滤
*Default value 默认值
解析好的变量如何使用请查看:Jenkins配置git源码管理
这两个是用来配置token的,如果配置了token之后,在请求时需要携带,使用方式下面也写了。
*第一个是打印gitlab发过来的数据
*第二个是打印上面配置的接收参数
两个都会在任务执行的时候打印到控制台
最后这个是用来过滤什么样的请求可以触发当前认为
*Expression是填正则
*Text填接收的某个参数值
例如可以过滤某个人提交的代码,或者过滤是某个分支。图中的例子代表当mergeRequestState=opened的时候才会触发当前任务,其中mergeRequestState是上面定义的接收传过来参数的变量名。