如何从 Jira 中的状态更改触发 Jenkins 作业

Posted

技术标签:

【中文标题】如何从 Jira 中的状态更改触发 Jenkins 作业【英文标题】:How to trigger a Jenkins job from a status change in Jira 【发布时间】:2015-07-16 20:09:56 【问题描述】:

我一直在寻找一种方法来从状态或 Jira 更改状态中的票证/故事中触发 Jenkins 作业。举一个更详细的例子,当我的团队将工单移动到“准备测试”列时,我们希望能够在 Jenkins 中触发健全性测试包,理想的情况是我们能够发布结果(生成为 html)作为对 Jira 中的工单的评论。失败了,我们希望能够以简单的通过/失败的形式发布结果。

我最近一直在查看 Jenkins Jira 插件,但这似乎没有双向工作的功能,换句话说,它可以在作业运行后发布结果,但您不能从状态更改触发作业在吉拉。有没有这样的插件可用,还是我们需要自己创建?

提前干杯

【问题讨论】:

【参考方案1】:

请按照以下说明进行操作:

GIT:

您可以在提交时为 git/ bitbucket /stash 设置网络挂钩,这反过来应该会更改 JIRA 中的任务状态。

JIRA:

一旦你进入 JIRA。为您的任务定义工作流程。 在这个特定的工作流程中,您可以设置一个后期功能,应该配置网络挂钩。在此 webhook 配置中,事件定义 JQL 如下:

status CHANGED FROM "To Do" TO "ready to test".

同时提到需要在 URL 部分中触发的作业。

【讨论】:

【参考方案2】:

它涉及多个步骤 如果您使用的是 Git/Stash/BitBucket(我已实现), 你可以简单地

    在您的 Stash/Bitbucket 中配置提交挂钩 将事件附加到您的 JIRA 工作流 Jenkins JOB - 发布构建事件 - 配置通知 Stash 插件设置 Poll SCM

就是这样

【讨论】:

【参考方案3】:

我写了一个支持 JIRA 状态变化触发器的 Jenkins 插件:jira-trigger-plugin。

这个插件还注入了一个环境变量JIRA_ISSUE_KEY,所以你可以利用这个信息将你的结果发布回JIRA,例如使用 REST API。

【讨论】:

看起来 jira 只允许 80 和 443 端口 :( "WebHooks 只能使用标准 http 和 https 端口(80 或 443)。"【参考方案4】:

所以,jira 中基本上有 webhook (https://developer.atlassian.com/jiradev/jira-architecture/webhooks)。有了它,您可以将其配置为在问题状态更改时触发特定的 url。具体的 url 应该是 jenkins API,例如,为了触发构建,您应该调用外部 url,例如(如果您使用参数构建):http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value

更多信息https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API

【讨论】:

以上是关于如何从 Jira 中的状态更改触发 Jenkins 作业的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Jira 触发器插件在 Jenkins 中工作?

Jenkins - JIRA - GitLab 集成技巧(流程自动化概念)

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

Bamboo 可以在 JIRA 中更改票证的状态吗

如何将 Jenkins 构建信息与 JIRA 问题联系起来

如何使用服务挂钩从VSTS触发内部部署jenkins作业