Как указано в заголовке, я пытаюсь выполнить l oop над ArrayList
строками в сценарии Jenkins Groovy Pipeline (используя синтаксис сценария Pipeline). Позвольте мне изложить всю «проблему» для вас.
Я начну со строки местоположений файловой системы, разделенных пробелами: «/ var / x / var / y / var / z ...» примерно так. Я oop над этой строкой добавляю каждый символ к временному значению string
. И затем, когда я достигаю пробела, я добавляю эту временную строку в массив и перезагружаюсь. Вот некоторый код, показывающий, как я это делаю:
def full_string = "/var/x /var/y /var/z"
def temp = ""
def arr = [] as ArrayList
full_string.each {
if ( "$it" == " " ) {
arr.add("$temp") <---- have also tried ( arr << "$temp" )
temp = ""
} else {
temp = "$temp" + "$it"
}
}
// if statement to catch last element
Видите, проблема в том, что если я позже go до l oop над массивом, он решит l oop по каждому отдельному символу вместо всей строки /var/x
, как я хочу.
Я новичок в Groovy, поэтому я учился, когда строил этот конвейер. Использование Jenkins версии 2.190.1, если это вообще помогает. Я просмотрел документы SO и Groovy, а также документы по синтаксису конвейера для Jenkins. Не могу найти то, что я искал. Я уверен, что мое решение не самое элегантное и эффективное, но я сначала пойму, как оно работает, прежде чем пытаться выжать из него максимальную производительность.
Я нашел этот вопрос, но он был аналогичным бесполезно: Динамическое добавление элементов в ArrayList в Groovy.
Редактирование : я пытаюсь перевести старые сценарии компоновки оболочки c компании в трубопроводы Jenkins. , Моя начальная строка - это переменная окружения, доступная на всех наших узлах, которые также должны быть доступны внутри конвейера.
TL; DR - мне нужно иметь возможность создать массив из значений, разделенных пробелами в строке, и затем иметь возможность l oop над указанным массивом, и каждый «элемент» будет полной строкой вместо один символ, чтобы я мог правильно выполнять шаги конвейера.