用Jira webhook和Jenkins创建自动审批工作流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Jira webhook和Jenkins创建自动审批工作流相关的知识,希望对你有一定的参考价值。

参考技术A

由于工作的原因,需要写一个自动审批的工作流,看了下网上的分享,资料不多;经过几天的踩坑,决定写这篇分享,不对之处欢迎指正

首先创建一个工作流

Manage Jenkins -> Manage Plugin -> JIRA Trigger Plugin

Manage Jenkins -> Configure System -> JIRA Trigger Configuration

完成前面两部之后,开始创建webhook
Jira -> 系统 -> 高级 -> webhook 点击右上角创建webhook

保存之后,在浏览器输入刚刚webhook的URL,回车后如果提示这是一个POST请求

则表示webhook设置成功了!

总结一下webhook的工作原理:

也就是创建流水线的job,随便命名后,看到Build Triggers

其实到这里,整个webhook就可以用了,改变某个issue到指定状态,此job应当是会自动构建的,如果没有自动构建,那么要么是URL写错,要么是状态变更的错误,具体问题具体分析了。

前面说到webhook发起的是POST请求,很有意思的一件事请就是参数是如何传的呢?

webhook页面,URL下面写了可以在URL中使用下面的额外变量,我以为只要点击某个变量,加到URL后,即可传递此参数,可是事实是加上参数后URL甚至都不能用了。
不知道是不是我使用的姿势有问题,看了很多网上的分享,我了解到webhook的URL被请求后,实际上是默认会传issue的key过去的,我们选择一个已经构建的job rebuild一次,可以看到确实传了参数issue key

那么其实其他的参数都是没有用的么?
也许是有用的,可能是我引用的参数不对,目前为止,我只发现不传参的时候URL是可以被自动调用的(欢迎指正)
可是这个issue key其实已经足够有用了,你可以通过调jira的api获得你想要的信息,下一篇讲如何在pipline中使用参数

Jenkins获取Jira webhook的参数

参考技术A

接上一篇 issue key是webhook的POST请求默认传的值,如果想要在自己的脚本里用到这个值,要怎么传呢?

还是在jenkins的job中,点击Add parameter mapping -> Issue Attribute Path
输入在jenkins中用到的参数名,而issue的传参,上文提到了,默认是issue key,所以只需要写key即可

获取到这个key之后,如何传到自己写的脚本中呢?
我首先用的是一个普通的job,直接执行shell脚本

这样会找不到参数,直接输出“jira_issue_key”了
后来看了很多文章之后,发现使用pipline的job能找到参数,如下

这样,pipline脚本运行成功

以上是关于用Jira webhook和Jenkins创建自动审批工作流的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在工作失败时从 Jenkins 的 Jira 仪表板中自动创建新工单?

利用GitLab webhook来实现触发Jenkins自动操作

码云Webhook触发Jenkins自动构建 - Jenkins演练

jenkins系列3-gitlab webhook,jenkins自动构建

jenkins系列3-gitlab webhook,jenkins自动构建

钉钉JIRA机器人怎么用