我尝试使用groovy ConfigSlurper加载与构建相关的外部配置文件。我可以加载文件,但是如果我尝试在管道阶段访问它,Jenkins就会死掉一个" java.io.NotSerializableException:groovy.util.ConfigObject",但util.ConfigObject是可序列化的?是什么给了什么?
是否有其他方式以可返回对象的方式访问配置文件,以便我可以访问配置项,如:buildConfig.scm.someUser?
答案 0 :(得分:2)
使用json格式作为配置
readJSON步骤阅读
如果你有这个cfg.json文件
svg
然后此代码有效:
{
"scm":{
"someUser":"myUser"
}
}
或者您可以将yaml格式和readYaml step与yaml文件一起使用,如下所示:
def buildConfig = readJSON file: 'cfg.json'
def user = buildConfig.scm.someUser
assert user == "myUser"
答案 1 :(得分:1)
请不要使用ConfigSlurper - 在Groovy中实现它的方式意味着它会在Pipeline中导致严重的内存泄漏。不幸的是,它没有详细记录(我今天需要解决的问题),但这是noted in the source code并且会在提示中定期提及。
相反,更喜欢Pipeline Utility Steps - readYaml,readProperties,readJson等 - 这些都是安全的构造,并且可能会更好一些。