JIRA:如何让 webhook 仅在工作流的一次转换时触发?

JIRA: How to make a webhook fire for only a single transition, of a workflow?

场景是:

Git -> JIRA -> 詹金斯

Git 中的提交必须更改 JIRA 中的问题状态,这反过来应该触发 Jenkins 中的作业构建。

尝试过的方法:

  1. 我在 JIRA 中创建了一个 WebHook。此 webhook 包含 Jenkins 作业的 URL。
  2. 将此 WebHook 附加到 JIRA 中的工作流程,作为 post 函数
  3. 工作流程很简单。它说:[InReview]-->[InProgress]-(Aprrove)->[Done]
  4. webhook 附加到从 [InProgress] 到 [Done] 的过渡
  5. IssueKey 和 Issue-Updated 已在 WebHook 中提及。 IssueKey 将使该 WebHook 仅适用于特定问题。 Issue-Updated 是一个将在特定问题更新时触发 WebHook 的事件。

现在,当我执行 Git 提交时,Jira 问题的状态从 InReview 变为 InProgress,并且出现 Approve 按钮。当我签入 Jenkins 时,由于此问题更改而触发构建。我将再次返回 JIRA,点击批准按钮,问题状态从 InProgress 更改为 Done,这也会触发 Jenkins 中的构建。

我的要求是 Jenkins 构建应该只在 InProgress 到 Done 状态更改时发生。我无法指出 InReview 到 InProgress 转换触发 Jenkins 构建的原因。

关于此的任何指示都会有很大帮助。提前致谢。

经过多次尝试,终于 JQL 帮了我大忙。我按如下方式编辑了 WebHook:

Events(问题相关事件)部分,其中显示(问题和工作日志的事件。您可以指定 JQL 查询以仅发送由匹配问题触发的事件。) ,我输入了:

issuekey = "Issue-ID" AND status = "In Review"

以上代码行中提到的

"Issue-ID"仅供参考。实际上,它是一个 3 个字母的单词,后跟问题编号,例如:ABC-1

这将触发从特定状态转换的操作(webhook)。这个故事的寓意是:所有源自 JQL 查询 status="this value""this value" 的转换都将触发 webhook。

编辑 1: 为了使 webhook 更加特定于转换,以便它触发一个且仅一个转换,我们可以使用 JQL 作为:

status CHANGED FROM "In Progress" TO "Open"