Jenkins支持所有运行的job都可以在服务重启时中断、暂停在服务重启后恢复运行。为了实现这一点,Jenkins pipeline中定义的所有变量都必须是可序列化的。类似的,Jenkins也必须能序列化构建中节点和子job之间的全局变量的状态。
遇到java.io.NotSerializableException
问题的一般方法
- 将不可序列化的代码封装在一个用@NonCPS注释的函数中。这告诉Jenkins函数包含不可序列化的部分,必须在不可中断的情况下执行。使用NonCPS的函数中不能调用任何jenkins steps或其他CPS-transformed的代码。
- 尝试取消不可序列化变量的定义
更多详细信息参见链接
json解析
1 | import groovy.json.JsonSlurperClassic |