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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.