1 Generic Webhook Trigger的介绍
公司使用的是gitlab+jenkins的CI技术栈,当前打包的操作都是由运维去点击的,这样的效率太低了,不利于持续集成。如果使用触发的方式,应该是个更好的选择,但是我们又不想所有的代码提交都会触发打包的操作,这样太浪费资源了。要达到这种有条件的触发方式,这里就要使用Generic Webhook Trigger插件了。
相对与gitlab插件的webhook,这个插件的功能更加强大,主要是可以传入大量的参数给到jenkins,有这些参数,jenkins就可以做各种各样的操作了。
2 配置
2.1 安装Generic Webhook Trigger插件
在jenkins插件管理上搜索Generic Webhook Trigger即可完成安装,如果要离线安装可以查看官方文档 。
2.2 配置构建触发器
在jenkins上新增一个job,在job的配置页面上的构建触发器上勾选Generic Webhook Trigger,配置如图所示:

配置token,建议和job名称一致,如果多个任务同一个token,都会被触发的。

上面一顿操作下来,我们获得一个webhook的链接,如下:
http://192.168.1.1:8080/jenkins/generic-webhook-trigger/invoke?token=pipeline-bigscreen-token
2.3 在gitlab上配置webhook
在gitlab具体的代码仓设置页面,集成菜单下新增一个webhook,填入上面的地址,然后保存,最后点击测试看下是否正常触发。

那么怎么查看gitlab发送给jenkins上的参数呢?点击webhook的编辑页面,拉大最底下就可以看到我们刚刚触发的消息,点击查看,能看到大概如下的内容:

同时,我们也看下jenkins的任务,确认下是否正常被触发了。
3 配置有条件的触发
上面的配置,只要一有提交就会触发打包操作,我们希望做下过滤,这时候就需要使用Generic Webhook Trigger插件的过滤功能的。如下所示,我希望提交的信息里面包含package字样才进行打包的操作:

至于这个POST_DATA_commits_0_message变量是怎么来的,我们在调试的时候可以printenv
看下,看下哪些变量是就是我们想要的提交备注。
随后我们就可以做测试确认是否生效了。
4 更多功能
我这边希望开发触发打包之后,然后把打包的结果发送给到特定的开发人员,并且打包的jar包带上gitlab的commit id。所以这些需要如下的参数:
commit_id::POST_DATA_commits_0_id
分支名称:POST_DATA_ref
提交用户名称:POST_DATA_commits_0_author_name
提交用户邮箱地址:POST_DATA_commits_0_author_email
网友评论