实践环境

gitlab community edition

jenkins 2.284

post build task 1.9(jenkins插件)

generic webhook trigger plugin 1.72(jenkins插件)

gitlab 1.5.13(jenkins插件)

实现步骤

钉钉机器人配置

选择要推送的钉钉群 -> 点击群设置按钮 -> 点击智能群助手 -> 点击添加机器人 -> 点击添加机器人+号按钮 -> 点击自定义->填写机器人名字,用于匹配推送消息请求体内容的的关键词

然后,复制出webhook地址,供下文钉钉消息推送shell脚本中使用,完成

安装jenkins插件新建并配置jenkins项目build triggers配置

如下,勾选generic webhook trigger

post content parameters(因为gitlab触发的请求为post请求,需要基于请求体内容来判断是否执行jenkins构建)关键配置项说明:

variable 自定义变量名称

expression 用于提取变量值的表达式(支持jsonpathxpath),提取的值赋值给上述自定义变量(例中为event_name)。

option filter关键配置项说明:

expression 用于匹配下述text的正则表达式,如果匹配则执行构建请求,否则不执行。这里配置为^push$,是因为gitlab merge合并代码操作触发的请求,其请求体为json格式数据,其中包含名为event_name的键,其值为 push

text 用于匹配上述正则表达式的文本,例中设置为自定义变量$event_name

以上配置大意为,如果收到构建请求,使用jsonpath表达式从json格式的请求体获取键为event_name的值,存储到名为event_name变量,然后取该变量值同正则表达式^push$匹配,如果匹配,则触发jenkins构建当前项目,否则不构建。

token:自定义token值,用于请求http://jenkins_url/generic-webhook-trigger/invoke触发构建使用,如下,可以用于查询参数、请求头参数

generic-webhook-trigger配置参考连接

post-build actions配置

点击add post-build action按钮,弹出界面中选择post build task可新增以下配置界面。如下,可在script输入框中编写构建完成后需要执行的shell命令(该插件会先根据填写的shell命令生成一个临时sh脚本,然后执行该脚本),例中为钉钉推送命令,具体代码参见下文

如上图,如果只希望构建成功才执行script,可以勾选run script only if all previous steps were successful

钉钉消息推送shell

说明:

curl http://ops.dev.xxxx.com/view/testarch/job/$job_name/lastbuild/api/xml --user juser_name:123456`

以名为juser_name的用户,使用密码123456访问指定项目的最后一次构建相关的信息,返回xml文档

注意:钉钉聊天窗口中要实现消息换行必须使用两个\n

gitlab自动触发配置

settings -> integration,打开如下页面,

  1. 填写url(http://ops.dev.xxxx.com/generic-webhook-trigger/invoke?token=0771826b93bbd566266bce34f5123ebb),这里的token值即为generic-webhook-trigger插件中配置在定义token
  2. 勾选push events触发器(这里以push、合并代码操作为例子,所以仅勾选该事件)
  3. 勾选 enable ssl verification 复选框(如果没有勾选的话,默认就是勾选的)

最后点击 add webhook按钮

添加的配置,会自动显示在下方,可以对其进行事件触发测试

触发的记录会自动在配置编辑页面下方显示,点击 view details按钮,可以查看请求明细

注意:自动触发时jenkins项目构建时,如果jenkins使用了参数化构建插件build with parameters plugin,并且使用插件实现的参数有设置默认值,则自动触发时也会自动使用对应参数的默认值进行构建。

钉钉消息推送效果图

到此这篇关于使用jenkins完成钉钉消息推送及gitlab事件自动触发的jenkins构建的文章就介绍到这了,更多相关jenkins内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!