2016-11-11 2 views
1

Ich habe einen Jenkins-Job, der eine groovy-Datei lädt, die die Pipeline zu laufen definiert. Wenn ich diesen Job starte, meldet er einen Fehler - groovy.lang.MissingPropertyException: No such property: ​ for class: groovy.lang.Binding (Stack-Trace unten).Jenkins Pipeline-Job-Berichte Groovy Binding Fehler

Dies funktionierte gestern und unerklärlicherweise funktioniert nicht mehr. Ich habe die Dokumente durchsucht, den Fehler gegoogelt und den Job und die allgemeine Groovy-Datei soweit wie möglich vereinfacht, kann das Problem aber bisher nicht identifizieren.

Meine Frage ist, hat jemand dieses Problem vor gesehen und wenn ja, was war die Wurzel casue und Lösung?

Pipeline Jobskript:

#!groovy 

node 
{ 
    def pipeline = load "CommonPipeline.groovy" 
    pipeline.run() 
} 

CommonPipeline.groovy:

#!groovy 
​ 
def run() 
{ 
    echo "#### THIS WORKS! ####" 
} 

return this 

Stack Trace:

Started by user jenkins 
[Pipeline] node 
Running on Worker in c:\path\to\script\groovy-test 
[Pipeline] { 
[Pipeline] load 
[Pipeline] { (CommonPipeline.groovy) 
[Pipeline] } 
[Pipeline] // load 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 
groovy.lang.MissingPropertyException: No such property: ​ for class: groovy.lang.Binding 
    at groovy.lang.Binding.getVariable(Binding.java:63) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:224) 
    at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:28) 
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20) 
    at Script1.run(Script1.groovy:2) 
    at ___cps.transform___(Native Method) 
    at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74) 
    at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30) 
    at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:66) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) 
    at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21) 
    at com.cloudbees.groovy.cps.Next.step(Next.java:58) 
    at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30) 
    at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:163) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:324) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:78) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:236) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:224) 
    at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:63) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112) 
    at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Finished: FAILURE 

Antwort

3

Dummer Fehler - die Header-Anweisung "shebang" #!groovy ist nicht erforderlich, wenn Ihre Dateierweiterung .groovy ist. Ich habe das von CommonPipeline.groovy entfernt und jetzt funktioniert der Job. Ich hätte nicht gedacht, dass das einen Unterschied machen würde!

Seltsamerweise hatte ich das nicht geändert, seit es gestern aufgehört hat zu arbeiten. Die einzige Änderung, die ich denken kann, waren einige Jenkins Plugin-Updates, die ich installiert habe ...

Ich werde diese Frage und Lösung verlassen, falls jemand anderes dieses Problem trifft.

+1

Ich habe dieses Problem bekommen, aber keinen Shebang. Keine Ahnung, warum es passiert. – Chris