2017-09-15 4 views
0

Die letzten erfolgreichen Jobvariablen oder Parameter können nicht über das Groovy-Skript abgerufen werden, sodass ich diese als nächste Variable an den nächsten Job übergeben kann.Kann die Methode getLastSuccessfulBuild() für das Nullobjekt nicht aufrufen

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

Fehlerprotokolle

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) 
+0

Nach Ihrer Bearbeitung machen der angegebene Code und die Ausnahme keinen Sinn mehr. – doelleri

+0

@doelleri Aktualisiert neuesten Fehlerprotokolle – Kally

Antwort

0

Von JavaDoc für 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 .

Für Sie ist getItem("Testing-4")null Rückkehr, also entweder es gibt kein Element mit dem Namen "Testing-4", oder Sie nicht als Benutzer mit den entsprechenden Berechtigungen angemeldet.

Sie können eine Liste von Elementen mit getItems() erhalten, die in einem explorativen Skript nützlich wäre, um herauszufinden, wie die verfügbaren Elemente aussehen.

+0

Import jenkins.model.Jenkins def job = Jenkins.instance.getJob ("Testing-4") def run = job.getItems() ERROR: Schritt mit java Ausnahme fehlgeschlagen Build- .lang.NullPointerException: Die Methode getItems() für das Nullobjekt \t kann nicht bei org.codehouse.groovy.runtime.NullObject.invokeMethod (NullObject.java:77) aufgerufen werden. – Kally

+0

'instance.getItems()' not 'job.getItems() '. Wir haben bereits festgestellt, dass "Job" null ist. – slim

+0

New ERROR: Build Schritt mit Ausnahme groovy.lang.MissingPropertyException fehlgeschlagen: Keine solche Eigenschaft: Beispiel für die Klasse: Script1 \t bei org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap (ScriptBytecodeAdapter.java:50) \t bei org .codehouse.groovy.runtime.callsite.PogoGetPropertySite.getProperty (PogoGetPropertySite.java:49) – Kally

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) 
+0

Könnte jemand mir helfen, groovy Ausgabe zu Jenkins aktueller Job Env Variable einzufügen – Kally

Verwandte Themen