Как обрабатывать параметры конвейерной работы в DSL? - PullRequest
0 голосов
/ 02 мая 2019

У меня есть конвейерное задание, которое выполняет последовательность заданий (например, настройка >> выполнить тест >> очистить). Я хочу, чтобы эта последовательность запускалась для 100 различных инструментов с разными параметрами для каждого инструмента. Параметризация выполнена. Так что я могу передать другой параметр.

Я передаю один параметр в конвейер в виде списка инструментов в виде строкового параметра, в котором инструменты разделены запятой (например, tool1, tool2, tool3)

Теперь я хочу изменить конвейер, чтобы он выполнял ту же последовательность (настройка >> запуск теста >> очистка) во всех инструментах с именем инструмента, переданным одному из заданий в качестве параметра.

Я думал, что возьму значение этого параметра и плюю его запятой, получу имя каждого инструмента и получу цикл for вокруг последовательности.

Я мог бы получить часть forloop, и она работает для многократного запуска.

for (int i = 0; i < 2; ++i) {
    stage('Setup') {
        build job: 'setup', parameters: [string(name: 'tool', value:'<tool>')]
    }
    stage('Build') {
        build 'Build Job'
    }
}

Но я не понимаю, как мы можем разделить параметр и дать по одному на каждую итерацию forloop в DSL. Кто-нибудь может помочь в этом?

1 Ответ

1 голос
/ 07 мая 2019

Параметры в jenkins доступны под переменной «param».И вы можете разбить строку на массив строк, используя функцию split ().После этого, если вы хотите перебрать все строки, вы можете использовать цикл for, перебирая массив, что-то вроде:

def tools = params.tool.split (',') // default separator is blanks
for (String part : tools)
{
    println (part)
}

Существуют различные способы перебора, это кажется очень интуитивно понятным длямне.Обратите внимание, что использование определенного разделителя создает пробелы после запятой части строк.При необходимости вы можете использовать функцию trim () для ее удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...