2015-04-23 29 views
1

我正在使用scriptler jenkins插件执行简单的groovy脚本。无法在null对象上调用方法getNodeName()

import hudson.model.Computer 
import hudson.model.Node 

println Computer.currentComputer().getNodeName() 

如果我执行这个对主或任何奴隶,给我的NullPointerException

java.lang.NullPointerException: Cannot invoke method getNodeName() 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) 

不知道什么是错的脚本。

+0

猜测它不在执行程序线程上。 http://javadoc.jenkins-ci.org/hudson/model/Computer.html#currentComputer() –

回答

1

您发布的代码只能在“执行系统Groovy脚本”(它在您的作业配置中)中执行specyfic作业时执行。

+0

我已经使用scriptler插件。当我在master上执行上面的脚本得到这个异常时 - 失败 - groovy.lang.MissingMethodException:没有方法签名:hudson.model.Hudson $ MasterComputer.getNodeName()适用于参数类型:()values:[] – rohitkadam19

0

java.lang.NullPointerException: Cannot invoke method getNodeName() on null object表示Computer.currentComputer().getNodeName()表示Computer.currentComputer()返回null。至于这是为什么?没有足够的信息来回答这个问题

+0

我应该在脚本中做些什么改变,以便我可以获取当前正在运行的作业的节点名称。 – rohitkadam19

+0

你的脚本没问题。请参阅http://javadoc.jenkins-ci.org/hudson/model/Computer.html#currentComputer%28%29:“获取构建运行的当前计算机。此方法仅适用于构建过程中调用的方法,如由Publisher,BuildWrapper等返回: 与Executor.currentExecutor()相关联的计算机或(如1.591一致)null(如果不在执行程序线程上)。所以我假设你没有在构建过程中运行脚本,也没有在执行程序线程中运行脚本,或者你没有正确配置。无论如何,这将是詹金斯的一个问题,我不太了解。 – blackdrag

相关问题