从Jenkins工作流(Jenkinsfile)更新Jira票据

6
如何在Jenkinsfile (jenkins-worflow/pipeline)中更新jira问题?是否可以在Jenkinsfile中使用Jira Issue Updater插件作为步骤?我知道可以使用Jira RestAPI,但我正在尝试弄清楚是否可以重用jira-updater-issue提供的功能。我正在寻找类似于下面调用Junit archiver和artifact archiver的示例,但是调用jira更新程序。
    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'])
    }
4个回答

10

Jira插件与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']]]]) 

您可以在内置的Pipeline Snippet Generator中获得完整的参考。


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/


1
此外,如果您想要给多个票务添加标签,ticket 字符串需要是一个逗号分隔的字符串,逗号和票务之间不能有任何空格。 - undefined

0

JIRA Steps Plugin 提供了一种更加声明式的方式来更新现有的 Jira 工单

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来定义您的流水线,那么这应该是您首选的方式...


-1

嗨,谢谢,但我正在寻找一个使用jenkins-workflow dsl的示例。我认为你指向的文档是指从常规(非工作流)项目中使用jira-updater,对吧?我的意思是,它告诉你如何使用jenkins ui。我要找的是从工作流jenkinsfile中使用它的方法。 - portenez
1
同意。这不是一个答案。 - Joshua Davis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接