如何从 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 作业的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins - JIRA - GitLab 集成技巧(流程自动化概念)