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. Что может быть неправильным?
Ответы
Ответ 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: возникает, когда вы используете переменную за пределами ее области действия или вы не определили эту переменную.