Day 7. Jenkins - Gitlab Webhook集成

Day 7. Jenkins - Gitlab Webhook集成

9 个月前

Gitlab webhook的主要目的就是当gitlab中的项目代码有变更时,例如Push / Merged,就会触发 Jenkins自动构建。

结合DevOps理论,一般会在Code Review后Merge request,一般此时应构建一个版本,用于自动化测试等后续操作。而这个行为在大多数执行DevOps的公司里都是手动执行的,也就是跑到Jenkins中去启动相对应的Pipeline。

而在这里,可以通过Gitlab的Webhook自动启动Jenkins pipeline,更为智能方便。

一、配置Jenkins,安装相关插件

Generic Webhook Trigger Plugin

其实也可以安装Gitlab插件,但是这个gitlab插件不支持获取诸如分支、触发者、行为等触发信息,所以这里选择这个插件。

二、配置Jenkins项目

Build Triggers 中找到 Generic WEbhook Trigger

在相关内容中的末尾选中,这两项可以有效的帮助我们debug:

  1. Print post content 打印触发请求的POST内容
  2. Print contributed variables 打印绑定的变量内容

配置Token,该token即是访问Jenkins的URL,也是唯一标识本项目的ID,所以,在这里标识的token应该全局唯一的:

配置获取请求参数,这个参数是gitlab webhook访问时通过URL地址带过来的:

如上所示,通过 JENKINS_URL/generic-web 触发Jenkins构建,那么Jenkins Pipeline中就会自动创建一个变量名为 runOpts 的变量,并绑定值为 gitlab

这个相当有用,通过这个可以覆盖parameters定义的变量,或者通过某个变量来判断当前是由人手触发还是由gitlab触发,从而可以根据这个的不同而有不同的构建行为。


获取请求内容参数:

gitlab webhook发送到Jenkins的请求是一个json,有时我们需要获取一些请求信息,如分支名、触发者等相关信息,这里即可做到。

搞定这些基本上就配好了Jenkins对于gitlab的webhook配置。

仅接收Push,不接收创建、删除Branch的触发:

参考:

三、配置gitlab项目

跑到项目的配置页面,按下图选择 webhooks :

在以下页面中填写Jenkins的相关信息:

URL: http(s)://<jenkins url>/generic-webhook-trigger/invoke?<parameters>

Secret token: 在Jenkins 中配置好的secret token

Trigger: 触发事件

如果是HTTP,或者是自签证书HTTPS,那么可以取消 SSL verification :

保存后可以测试一下:

可以在Jenkins的项目日志中看到相关的调用结果:


四、总结

由此,Jenkins & Gitlab集成基本完成。

文章写得不怎么样,这个过程需要动手自己整一遍才会有所体会。

编辑于 2022-11-08 23:04 ・IP 属地广东