【问题标题】:JIRA: How to make a webhook fire for only a single transition, of a workflow?JIRA:如何让 webhook 只为工作流的单个转换触发?
【发布时间】:2016-03-30 19:54:09
【问题描述】:

场景是:

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. WebHook 中提到了IssueKey 和Issue-Updated。 IssueKey 将使该 WebHook 仅适用于特定问题。 Issue-Updated 是一个在特定问题更新时触发 WebHook 的事件。

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

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

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

【问题讨论】:

  • 你在 jenkins 中启用了 scm polling 吗?
  • 你好@GuyBouallet,谢谢你的建议。我尝试过这个。但这并没有解决问题。我想我刚刚在 JQL 的帮助下解决了这个障碍。我会在下面提到解决方案。
  • 你检查过 Jenkins 中的Changelog matcher 配置了吗?您可以将jira-trigger-plugin 配置为仅当发送给Jenkins 的状态为Done 时才会触发构建。查看插件自述文件/帮助以获取更多信息。

标签: git jenkins jira webhooks


【解决方案1】:

经过大量的尝试和尝试,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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-24
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2021-01-06
    • 2018-08-14
    • 1970-01-01
    相关资源
    最近更新 更多