pipeline 循环不可序列化参数 如map的解决方法
problem:
java.io.NotSerializableException: java.util.LinkedHashMap$Entry
solution:
node {
....
for (it2 in mapToList(depmap)) {
name = it2[0]
revision = it2[1]
}
}
@NonCPS
def mapToList(depmap) {
def dlist = []
for (entry in depmap) {
dlist.add([entry.key, entry.value])
}
dlist
}
use unserializable type like map etc. in each() iteration or for() iteration would cause the problem
map.each{ k, v -> println "${k}:${v}" }
map.each { k, v -> println "$k := $v" }
其他参考:
@NonCPS
def mapToList(depmap) {
def dlist = []
for (def entry2 in depmap) {
dlist.add(new java.util.AbstractMap.SimpleImmutableEntry(entry2.key, entry2.value))
}
dlist
}
----
for (def e in mapToList(map))
{
println "key = ${e.key}, value = ${e.value}"
}
http://stackoverflow.com/questions/40159258/impossibility-to-iterate-over-a-map-using-groovy-within-jenkins-pipeline