Использование цикла для запуска параллельных сборок с использованием плагина build-flow в Jenkins

Я использую плагин потока сборки для параллельного запуска задач в Jenkins. Изначально работало вот это:

parallel (
    { build("jobX", param: params["inputVal1"])
    },
    {build("jobX",  param: params["inputVal2"])
    }
)

Однако моя потребность теперь требует, чтобы я написал это в каком-то цикле, поскольку количество заданий является динамическим. Я хочу сделать что-то вроде этого (концептуально):

parallel
(
    for(int i=1; i<=numOfJobs; i++)
    {
        build("jobX", param: params["inputVal" + i])
    }
)

В Jenkins Buildflow есть ответ. плагин: как сделать переменное количество заданий параллельно?, но это не совсем подходит для моей потребности.


person naspras    schedule 01.12.2015    source источник
comment
stackoverflow.com/questions/31387614/ ?   -  person tim_yates    schedule 01.12.2015
comment
Спасибо @tim_yates. У меня возникли проблемы с написанием синтаксиса Groovy здесь, так как я хочу детерминированно выполнять цикл на основе целочисленного значения, а не списка. Что-то вроде этого после ответа в указанном URL-адресе выше: parallel numJobs.each { index -> { -> build("jobX", param: params["inputVal" + index]) } }. Но и это не работает. Не могли бы вы помочь с синтаксисом здесь?   -  person naspras    schedule 01.12.2015


Ответы (1)


Вам понадобится что-то вроде:

parallel((1..numOfJobs).collect { index ->
    { -> build("job${index}", param: params["inputVal" + index]) }
})
person tim_yates    schedule 01.12.2015
comment
Спасибо @tim_yates. Я сделал это с небольшим изменением, но это работает. - person naspras; 02.12.2015
comment
На самом деле отсутствуют круглые скобки вокруг целых выражений… должно быть parallel ((1..numOfJobs).collect { index -> { -> build("job${index}", param: params["inputVal" + index]) } }) - person Clintm; 25.01.2018