2016-12-15 4 views
1

У меня есть код, который читает в файле pom.xml затем пытается повторно сериализации и записать его обратно:Дженкинс: java.io.NotSerializableException: groovy.util.slurpersupport.NodeChild

// Get the file raw text 

def pomXMLText = readFile(pomFile) 

// Parse the pom.xml file 

def project = new XmlSlurper(false, false).parseText(pomXMLText) 

... do some useful stuff ... 

def pomFileOut = "$WORKSPACE/pomtest.xml" 

def pomXMLTextOut = groovy.xml.XmlUtil.serialize(project) 

println "pomXMLTextOut = $pomXMLTextOut" // <-- This line prints to updated XML 

WriteFile файла: pomFileOut, текст: pomXMLTextOut // < - Эта линия падает с ошибкой, указанной в заголовке публикации: java.io.NotSerializableException: groovy.util.slurpersupport.NodeChild

Я попытался отливку Переменная pomXMLTextOut для строки. Я попытался применить метод .text(), который получает ошибку безопасности песочницы jenkins. Кто-нибудь еще смог успешно записать XML-файл из строящего скрипта, работающего в конвейере Дженкинса?

BTW, я также попытался использовать объект File, но это не удалено по узлам jenkins. Он работает до тех пор, пока задание всегда выполняется на сервере.

ответ

0

Вы можете попробовать @NonCPS аннотацию и закрыть эту несериализуемую объекты в Funcation как этот

@NonCPS 
def writeToFile(String text) { 
    ... 
} 

Вот объяснение от Pipeline groovy plugin

@NonCPS методы могут безопасно использовать несериализуемые объекты как местные переменные

Смежные вопросы