22

我正在尝试在 Hudson 中调用 Groovy(使用 groovy 插件)来获取我们构建的一些属性。但我得到了这个例外:

groovy.lang.MissingPropertyException:没有这样的属性:类管理器:Script1

我通过以下行得到这个:

def buildNUmber = manager.build.number

当我在 Jenkins 中作为内联命令运行以及使用脚本时会发生这种情况:

我尝试了下面的解决方案,但在声明过程中失败了(第二行):

Binding binding = new Binding();
binding.setVariable("manager", manager);
GroovyShell shell = new GroovyShell(binding);
shell.evaluate(new File("d:/dev/others/hudson/userContent/ScriptStuff.groovy").text);

以上运行使用:Groovy 命令。当我运行构建时,它会出错并抱怨该行 -binding.setVariable("manager", manager);

当我使用 Groovy 脚本文件时,它会抱怨:

 def buildNumber = manager.build.number

两个错误都是:

groovy.lang.MissingPropertyException:没有这样的属性:类管理器:Script1

也尝试了此线程中提到的所有内容:

我正在使用 Hudson 2.2.1 和 Groovy 2.1.3。有什么问题?

4

4 回答 4

20

manager由某些 Groovy 脚本插件提供,但不是全部。要使您的脚本通用,请改用 Jenkins/Hudson API:

import hudson.model.*

def build = Thread.currentThread().executable
def buildNumber = build.number
...
于 2014-11-04T08:40:39.310 回答
8

以防万一,如果您使用“执行系统 ​​Groovy 脚本”,则不需要使用“管理器”变量。这对我有用 -

def workspace = build.getEnvVars()["WORKSPACE"]
于 2016-08-21T08:36:09.900 回答
5

groovy.lang.MissingPropertyException:的原因之一是在您使用其范围之外的变量或未定义该变量时引发。

于 2017-08-10T18:52:06.433 回答
4

也许我错过了您的代码的某些部分,但是您在哪里定义经理?如果这是完整的 Groovy 脚本,那么您正在尝试绑定一个未声明任何内容的变量,因此它失败也就不足为奇了。

只需定义一个您想要的经理,例如:

def manager = "my manager" // probably not what you want

这应该可以解决您当前的错误。

于 2013-04-21T18:54:21.543 回答