0

Unable to retrieve Jenkins job last successful job variables or Parameters via Groovy script so that I can pass these to next job as a variable.

import jenkins.model.Jenkins
def job = Jenkins.instance.getJob("Testing-4")
def run = instance.getItems()
println run.getEnvironment()["PipelineId"]

Error logs

    ERROR: Build step failed with exception
java.lang.NullPointerException: Cannot invoke method getLastBuild() on null object
    at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:77)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:32)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at Script1.run(Script1.groovy:3)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:618)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:589)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:168)
    at hudson.plugins.groovy.SystemGroovy.run(SystemGroovy.java:95)
    at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:59)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
    at hudson.model.Build$BuildExecution.build(Build.java:205)
    at hudson.model.Build$BuildExecution.doRun(Build.java:162)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
    at hudson.model.Run.execute(Run.java:1738)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:410)
asur
  • 1,759
  • 7
  • 38
  • 81

2 Answers2

0

From JavaDoc for Jenkins.getItem():

Returns: an item whose Item.getName() is name and whose Item.getParent() is this, or null if there is no such item, or there is but the current user lacks both Item.DISCOVER and Item.READ.

For you, getItem("Testing-4") is returning null, so either there is no item with the name "Testing-4", or you are not logged in as a user with the appropriate permissions.

You can get a list of items with getItems(), which would be useful in an exploratory script to find out what the items available to you look like.

slim
  • 40,215
  • 13
  • 94
  • 127
  • import jenkins.model.Jenkins def job = Jenkins.instance.getJob("Testing-4") def run = job.getItems() ERROR: Build step failed with exception java.lang.NullPointerException: Cannot invoke method getItems() on null object at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:77) – asur Sep 18 '17 at 06:07
  • `instance.getItems()` not `job.getItems()`. We've already established that `job` is null. – slim Sep 18 '17 at 21:47
  • New ERROR: Build step failed with exception groovy.lang.MissingPropertyException: No such property: instance for class: Script1 at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50) at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49) – asur Sep 19 '17 at 04:49
  • I managed to get the code now. Could you help me in inserting groovy output to Jenkins Env variable. – asur Sep 19 '17 at 11:16
0
import hudson.model.*;

def lastSuccessfulPipelineID = build.getProject().getLastSuccessfulBuild().properties.get("envVars")['PipelineNumber']
def pa = new ParametersAction([
  new StringParameterValue("lastSuccessfulPipelineID", lastSuccessfulPipelineID)
])
println(lastSuccessfulPipelineID)

build.addAction(pa)
asur
  • 1,759
  • 7
  • 38
  • 81
  • Could someone help me in inserting groovy output to Jenkins current job Env variable – asur Sep 19 '17 at 11:19