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

时间:2016-02-04 22:55:13

标签: jenkins jira jira-plugin jenkins-cli jenkins-workflow

如何在Jenkinsfile (jenkins-worflow/pipeline)内更新jira问题? 有没有办法可以使用Jira Issue Updater plugin作为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'])
    }

4 个答案:

答案 0 :(得分:8)

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']]]]) 

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

答案 1 :(得分:0)

是的,好像这个页面回答了你的问题:

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

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

在那里你可以给你的Jira服务器的REST URL,信用卡和JQL来找到问题

答案 2 :(得分:0)

JIRA Steps Pluginupdate an existing 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()
  }
}

由于您希望使用Jenkins文件来定义管道,这应该是您的首选方式...

答案 3 :(得分:0)

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

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/