从 Jenkins 工作流程更新 Jira 票证 (jenkinsfile)

问题描述 投票:0回答:5

如何从 Jenkinsfile (jenkins-worflow/pipeline) 中更新 jira 问题? 有没有办法可以使用 Jira Issue Updater 插件 作为 Jenkinsfile 中的一个步骤?

我知道我可以使用 Jira RestAPI,但我正在尝试弄清楚是否可以重复使用 jira-updater-issue 提供的功能。

我正在寻找类似于下面的示例的东西,调用 Junit archiver 和 atifact archiver,但调用 jira updater。

    node {
      git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
      def mvnHome = tool 'M3'
      sh "${mvnHome}/bin/mvn -B -Dmaven.test.failure.ignore verify"
      step([$class: 'ArtifactArchiver', artifacts: '**/target/*.jar', fingerprint: true])
      step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
    }
jenkins jira jira-plugin jenkins-cli jenkins-workflow
5个回答
11
投票

Jira Plugin 与 Pipeline 兼容。

这应该有效:

step([$class: 'hudson.plugins.jira.JiraIssueUpdater', 
    issueSelector: [$class: 'hudson.plugins.jira.selector.DefaultIssueSelector'], 
    scm: [$class: 'GitSCM', branches: [[name: '*/master']], 
        userRemoteConfigs: [[url: 'https://github.com/jglick/simple-maven-project-with-tests.git']]]]) 

您可以在内置的管道片段生成器中获得完整的参考。


2
投票

因为这对我来说比应有的要困难得多,所以这里有一个可行的例子。这将使用特定值更新票证的自定义字段:

step([$class: 'IssueFieldUpdateStep',
        issueSelector: [$class: 'hudson.plugins.jira.selector.ExplicitIssueSelector', issueKeys: ticket],
        fieldId: field,
        fieldValue: value
    ])

代码片段生成器对我不起作用。变量 Ticket、Field 和 Value 都是字符串。从这里开始,您可以在这里寻找选项:https://www.jenkins.io/doc/pipeline/steps/jira/


0
投票

JIRA Steps 插件提供了一种更具声明性的方式来更新现有的 Jira Ticket

node {
  stage('JIRA') {
    # Look at IssueInput class for more information.
    def testIssue = [fields: [ // id or key must present for project.
                               project: [id: '10000'],
                               summary: 'New JIRA Created from Jenkins.',
                               description: 'New JIRA Created from Jenkins.',
                               customfield_1000: 'customValue',
                               // id or name must present for issuetype.
                               issuetype: [id: '3']]]

    response = jiraEditIssue idOrKey: 'TEST-01', issue: testIssue

    echo response.successful.toString()
    echo response.data.toString()
  }
}

既然您想使用 Jenkinsfile 来定义您的管道,那么这应该是您的首选方式...


0
投票

基于 amuniz 的答案,如果您在已经完成结账的管道中运行,则可以进一步简化:

step([$class: 'JiraIssueUpdater',
    issueSelector: [$class: 'hudson.plugins.jira.selector.DefaultIssueSelector'],
    scm: scm])

-1
投票

是的,似乎此页面回答了您的问题:

https://wiki.jenkins-ci.org/display/JENKINS/Jira+Issue+Updater+Plugin

安装插件后,添加构建步骤或构建前/构建后步骤来调用此插件

您可以向其提供 Jira 服务器的 REST URL、凭据和 JQL 以查找问题

© www.soinside.com 2019 - 2024. All rights reserved.