Бесконечный массив как параметр Дженкинса - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь создать задание Jenkins, в котором задание перебирает массив значений.Число элементов массива не является фиксированным, оно может изменяться в последующих сборках.

Например, моя работа проходит через следующий набор значений массива:

ServerName: server1.example.com IP: 1.1.1.1 пользователь: Гомер

имя_сервера: server2.example.com IP: 2.2.2.2 пользователь: Барт

.

.

имя_сервера:serverN.example.com IP: xxxx пользователь: Ned

Задание запускает свою первую итерацию со значениями {ServerName: server1.example.com, IP: 1.1.1.1, пользователь: Homer}, вторая итерация со значениями {ServerName: server2.example.com, IP: 2.2.2.2, пользователь: Bart} и т. Д. До N итераций.

Здесь важным моментом является то, что N не является фиксированным.

У меня былизучите расширенный параметр выбора с помощью JSON / groovy, но не можете найти решение проблемы с переменным количеством элементов массива.

Есть ли плагин, который можно использовать в этом сценарии, и если да, то чтоправильное использование?

1 Ответ

0 голосов
/ 25 мая 2018

Я использую String Parameter и в своем конвейерном скрипте я использую блок script, чтобы разбить строку, по умолчанию она разделяется на новые строки или просто пробелы, и это было все, что мне было нужно.Похоже, вам понадобится специальный символ разделения, обратите внимание, что groovy поддерживает регулярные выражения для разделения как , показанное здесь .Может быть, вы могли бы использовать | символ и разделить на него,

"{ServerName: server.example.com, IP: 1.1.1.1, user: Bart1}|{ServerName: server2.example.com, IP: 2.2.2.2, user: Bart2}"

Тогда вы могли бы сделать

script {
    def list = "${StringParamName}".split('|')

    // Can NOT use `for (var_item in list)` because of NotSerializableException
    for (int i = 0; i < list.size(); i++) {
        def item = list[i]
        // Do work with "${item}"
    }
}
...