Подтвердить что ты не робот

Groovy.lang.MissingPropertyException: нет такого свойства: manager для класса: Script1

Я пытаюсь вызвать Groovy внутри Hudson (используя плагин Groovy), чтобы получить некоторые свойства для нашей сборки. Но я получаю это исключение:

groovy.lang.MissingPropertyException: Нет такого свойства: manager для класса: Script1

Я получаю это со следующей строкой:

def buildNUmber = manager.build.number

Это происходит, когда я запускаю как встроенную команду в Jenkins, а также используя script:

Я попробовал решение ниже, но оно не выполняется во время самой декларации (строка 2):

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 script, он жалуется:

 def buildNumber = manager.build.number

Обе ошибки: groovy.lang.MissingPropertyException: Нет такого свойства: менеджер для класса: Script1

Пробовал все, что упоминалось в этом thread:

Я использую Hudson 2.2.1 и Groovy 2.1.3. Что может быть неправильным?

4b9b3361

Ответ 1

Возможно, мне не хватает части кода, но где вы определяете менеджера? Если это полный Groovy script, вы пытаетесь связать переменную, которая не объявлена ​​ничем, поэтому не странно, что она терпит неудачу, правильно?

Просто определите менеджера, что вы хотите, например:

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

И следует избавиться от вашей текущей ошибки.

Ответ 2

manager предоставляется некоторыми плагинами Groovy script, но не все. Чтобы создать общий script, используйте API Jenkins/Hudson:

import hudson.model.*

def build = Thread.currentThread().executable
def buildNumber = build.number
...

Ответ 3

На всякий случай это поможет, если вы используете "Execute System Groovy Script", вам не нужно использовать переменную "manager". Это сработало для меня -

def workspace = build.getEnvVars()["WORKSPACE"]

Ответ 4

Одна из причин groovy.lang.MissingPropertyException: возникает, когда вы используете переменную за пределами ее области действия или вы не определили эту переменную.