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 connection
def jenkinsJob = "http://10.90.168.29:8081/job/HPA_Build/"
def slurper = new JsonSlurper()
def jsonResult
def buildJob
def buildNumber
def buildJobLink
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 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://10.90.168.29:8081/favicon.ico").
iconTitle("Jenkins").
title("Job #$buildNumber").
url(buildJobLink).
summary("build").
statusIconUrl ("http://10.90.168.29:8081/images/16x16/terminal.png").
statusIconTitle("Building...").
statusIconLink(buildJobLink + "console").
build()
def linkResult = linkService.createRemoteIssueLink(link, jenkinsUser)
This is the script I'm running on script runner. I'm trying to attach jenkins job in to JIRA as a Issue Link. What am i doing wrong? Please check the error log
2015-01-22 09:46:16,623 http-bio-8080-exec-21 ERROR admin 586x859x1 1g7qgc5 127.0.0.1 /secure/WorkflowUIDispatcher.jspa
[scriptrunner.jira.workflow.ScriptWorkflowFunction] Script function failed on issue: HBR-272, actionId: 11, file: C:\T
rans_jira\link.groovy
javax.script.ScriptException: javax.script.ScriptException: java.lang.NullPointerException: Cannot get property 'number
' on null object
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runFileAsScript(ScriptRunnerImpl.groovy:194)
at com.onresolve.scriptrunner.runner.ScriptRunner$runFileAsScript$0.call(Unknown Source)
at com.onresolve.scriptrunner.canned.jira.utils.CustomScriptDelegate.doScript(CustomScriptDelegate.groovy:47)
at com.onresolve.scriptrunner.canned.jira.utils.CustomScriptDelegate$doScript.call(Unknown Source)
at com.onresolve.scriptrunner.canned.jira.workflow.postfunctions.CustomScriptFunction.doScript(CustomScriptFunct
ion.gr
oovy:20)
Caused by: javax.script.ScriptException: java.lang.NullPointerException: Cannot get property 'number' on null object
... 5 more
Caused by: java.lang.NullPointerException: Cannot get property 'number' on null object
at Script9.run(Script9.groovy:26)
... 5 more
buildJob seems to be null so
You may add something like (~ line 25 of your gist):
jsonResult = slurper.parseText(connection.content.text) // Take a look at this output by adding a log log.debug jsonResult // Take a look at the value of key log.debug key buildJob = jsonResult.builds.find {build -> build.actions.parameters.getAt(0)?.getAt(1)?.value == key}
Which values do you have in "jsonResult" and "key" before the line buildJob=.... ?
I think it's failing in line 28 of your gist, that is, buildJob is null. Can you add some logging so you can see what it is.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It's actually failling in the last line when its trying to create a link in JIRA
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
What code is on: Caused by: java.lang.NullPointerException: Cannot get property 'number' on null object at Script9.run(Script9.groovy:26) Can you format the code properly? Either use a code block or post to gist.github.com.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.