Skip to content

Instantly share code, notes, and snippets.

Created January 23, 2015 21:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/5f19e6c459e367ec88ad to your computer and use it in GitHub Desktop.
Save anonymous/5f19e6c459e367ec88ad to your computer and use it in GitHub Desktop.
Groovy Script links jenkins to JIRA
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.link.RemoteIssueLinkBuilder
import com.atlassian.jira.issue.link.RemoteIssueLinkManager
import java.net.URL
import java.net.URLEncoder
import java.io.OutputStreamWriter
import groovy.json.JsonSlurper
def key = issue.getKey()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def connection
def jenkinsJob = "http://localhost:8081/HPA_Build/"
def slurper = new JsonSlurper()
def jsonResult
def buildJob
def buildNumber
def buildJobLink
//job is out of the queue. find the one for our issue
connection = new URL(jenkinsJob + "api/json?tree=builds[number,actions[parameters[name,value]]]").openConnection()
jsonResult = slurper.parseText(connection.content.text)
buildJob = jsonResult.builds.find {build -> build.actions.parameters.getAt(0)?.getAt(1)?.value == key}
buildNumber = buildJob.number
buildJobLink = jenkinsJob + buildNumber + "/"
def linkService = ComponentAccessor.getComponent(RemoteIssueLinkManager.class)
def jenkinsUser = ComponentAccessor.getUserManager().getUserByName("jenkins")
def builder = new RemoteIssueLinkBuilder()
def link = builder.globalId("jenkinsBuildNumber=$buildNumber&issueKey=$key").
issueId(issue.getId()).
relationship("is executed by").
applicationName("Jenkins").
applicationType("Build Server").
iconUrl("http://localhost:8081/favicon.ico").
iconTitle("Jenkins").
title("Job #$buildNumber").
url(buildJobLink).
summary("build-$domain-$application").
statusIconUrl("http://localhost:8081/images/16x16/terminal.png").
statusIconTitle("Building...").
statusIconLink(buildJobLink + "console").
build()
def linkResult = linkService.createRemoteIssueLink(link, jenkinsUser)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment