Jenkins工作流程出现java.io.NotSerializableException: groovy.json.internal.LazyMap in Closure错误

3
我在工作流脚本中有以下函数,结果出现错误 java.io.NotSerializableException: groovy.json.internal.LazyMap
def getParentTagForCurrentBranch(appWorkspace) {

   def parentTag = null

   dir("${appWorkspace.getPath()}") {

      parentTag = bat(script:"git describe --abbrev=0 --tags", returnStdout:true)
   }

   return parentTag
}

我不理解这个错误和我在哪里使用了LazyMap有什么关系?

我尝试了很多不同的代码块变化,但都导致了错误。我也尝试使用@NonCPS,但结果是整个方法被跳过。

有人能帮我理解为什么会出现这个错误以及如何解决吗?


1
你确定在工作流程的其他地方没有解析JSON吗? - tim_yates
如果你能找到JSON解析发生的地方,这个回答另一个问题可能会有帮助:https://dev59.com/i1oU5IYBdhLWcg3wEz6N#38439681。我发现这是绕过默认JsonSlurper不足的最简单方法,而不需要添加新的依赖项。 - BalRog
1个回答

2

1
所以,FYI,我今天看到了这个:java.io.NotSerializableException: groovy.json.JsonSlurperClassic - Michael Mol
你有没有想过如何防止这种情况?我刚刚看到了同样的错误,感到非常困惑。我原本以为使用 groovy.json.JsonSlurperClassic 是避免 Jenkins 对象序列化问题的推荐解决方案。所以,如果它在该类上抛出 java.io.NotSerializableException,我不知道该怎么办。 - unbrokenrabbit
1
我昨天也遇到了这个问题,通过使用readJSON而不是JsonSlurperClassic进行修复。https://www.jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#readjson-read-json-from-files-in-the-workspace - challett
@challett 这实际上应该是答案。你能把它发成一个回答吗?我不想占用你的功劳。 - marverix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接