zombieman
@zombieman

Как решить проблему при чтении XMl в Jenkins-Pipeline(написано на Groovy)?

у меня есть xml отчеты(тесты NUNIT) нужно читать и парсить их в Jenkins Pipeline(на языке Groovy)

такая конструкция идеально работает в Online Groovy Compiler (или в любом другом Ide для Groovy)
//вытащить данные по имени
def RunResultsName= (pXml.find {it.name() == 'test-suite'}).value()[3].find {it.name()}.@name;
println "2 test result result one node - ${RunResultsName}\n------"

//вытащить статус тестов
def ResultsPassed = (pXml.find {it.name() == 'test-suite'}).value()[3].find {it.name()}.@passed;
println "3 test-passed result one node - ${ResultsPassed}\n------"


но при переносе в Jenkins работает только вариант

def RunResultsName= (pXml.find {it.name() == 'test-suite'}).value()[3].find {it.name()}.@name;
println "2 test result result one node - ${RunResultsName}\n------"


а вариант
def ResultsPassed = (pXml.find {it.name() == 'test-suite'}).value()[3].find {it.name()}.@passed;
println "3 test-passed result one node - ${ResultsPassed}\n------"


отдает ошибку:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: No such field found: field groovy.util.Node passed


Еще раз отмечу что все исправно работает в других Groovy IDE

Перепробовал все варианты не могу понять проблему
в гугле нашел только один подобный момент (ну или гуглил плохо)

но он не исправляет проблему
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
zombieman
@zombieman Автор вопроса
Решение найдено, в jenkins работает вариант через атрибуты
к примеру
def ResultsPassed = (pXml.find{it.name() == 'test-suite'}).value()[3].find{it.name()}.attributes()["passed"];
println "3 test-passed result one node - ${ResultsPassed}\n------"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы