Impossibilidade de iterar sobre um mapa usando o Groovy no Jenkins Pipeline
Estamos tentando iterar sobre umMap
, mas sem sucesso. Reduzimos nosso problema para este exemplo mínimo:
def map = [
'monday': 'mon',
'tuesday': 'tue',
]
Se tentarmos iterar com:
map.each{ k, v -> println "${k}:${v}" }
Somente a primeira entrada é emitida:monday:mon
As alternativas que conhecemos nem são capazes de entrar no loop:
for (e in map)
{
println "key = ${e.key}, value = ${e.value}"
}
ou
for (Map.Entry<String, String> e: map.entrySet())
{
println "key = ${e.key}, value = ${e.value}"
}
Estão falhando, ambos mostrando apenas a exceçãojava.io.NotSerializableException: java.util.LinkedHashMap$Entry
. (que pode estar relacionado a uma exceção que ocorre enquanto gera a exceção 'real', impedindo-nos de saber o que aconteceu).
Estamos usando o jenkins estável mais recente (2.19.1) com todos os plugins atualizados até hoje (20/10/2016).
Existe uma solução para iterar sobre elementos em umMap
dentro de um script Groovy do pipeline de Jenkins?