#shell #jenkins #hashmap #jenkins-pipeline #jenkins-groovy
Вопрос:
У меня есть файл Дженкинса, в котором я пытаюсь зациклиться на одном массиве и передать его элементы в блок сценариев оболочки, Он работает нормально, но когда я зацикливаюсь на Hashmap и пытаюсь передать его ключи, он выдает ошибку.
stage('Validation'){
steps{
script{
test1 = ["elem1","elem2"]
test2 = [key1:"value1", key2:"value2"]
for(defaults in test1){
test=defaults
echo "before shell====> ${test}"
status = sh(returnStdout: true, script: """
echo "${test}"
""").trim()
}
echo "======started next HashMAP loop==========="
for(defaults in test2){
test=defaults.key
echo "before shell====> ${test}"
status = sh(returnStdout: true, script: """
echo "${test}"
""").trim()
}
}
}
}
Где вывод:
Последняя Ошибка :
Причина: java.io.NotSerializableException: java.util.Запись LinkedHashMap$
Комментарии:
1. Вы пробовали утверждение «По каждому»? Смотрите мой ответ ниже.
Ответ №1:
Когда я заменяю второй цикл на записи хэш-карты, такие как этот:
test2.each{ entry ->
test=entry.key
echo "before shell====> ${test}"
status = sh(returnStdout: true, script: """
echo "${test}"
""").trim()
}
Я получаю следующий результат:
Вероятно, это было то, чего ты хотел. По какой-то причине цикл «для каждого» не запускает сериализацию, как указано в комментариях ДЖЕНКИНСА-49732