Зацикливание хэш-карты в файле Дженкинса и передача ключей в оболочку, powershell или bat, не работает

#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