Как упростить синтаксис повторяющегося задания сборки?

#groovy #jenkins-pipeline

#groovy #дженкинс-конвейер

Вопрос:

У меня есть следующий скрипт Groovy:

 node {
    stage('Testing') {
        build job: 'Test', parameters: [string(name: 'Name', value: 'Foo'), string(name: 'Param1', value: Param1), string(name: 'Param2', value: Param2), string(name: 'Param3', value: Param3), string(name: 'Param4', value: Param4), string(name: 'Param5', value: Param5)], quietPeriod: 2, wait: false
        build job: 'Test', parameters: [string(name: 'Name', value: 'Bar'), string(name: 'Param1', value: Param1), string(name: 'Param2', value: Param2), string(name: 'Param3', value: Param3), string(name: 'Param4', value: Param4), string(name: 'Param5', value: Param5)], quietPeriod: 2, wait: false
        build job: 'Test', parameters: [string(name: 'Name', value: 'Baz'), string(name: 'Param1', value: Param1), string(name: 'Param2', value: Param2), string(name: 'Param3', value: Param3), string(name: 'Param4', value: Param4), string(name: 'Param5', value: Param5)], quietPeriod: 2, wait: false
        // ...
    }
}
  

который предназначен для запуска нескольких параметризованных заданий в Jenkins. Поскольку у меня есть огромное количество заданий для запуска с разными параметрами, я бы хотел избежать повторения одного и того же синтаксиса и определить параметры один раз и повторно использовать его.

Первый параметр Name отличается, но остальное то же самое. Как я могу повторно использовать одни и те же параметры (Param1Param5), не повторяя один и тот же код снова и снова?

Как этого можно достичь?

Ответ №1:

Вы могли бы сделать это с помощью простого метода :

 node {
    stage('Testing') {
        buildJob('Foo')
        buildJob('Bar')
        buildJob('Baz')
        // ...
    }
}

def buildJob(name) {
    build job: 'Test', parameters: [string(name: 'Name', value: name), string(name: 'Param1', value: Param1), string(name: 'Param2', value: Param2), string(name: 'Param3', value: Param3), string(name: 'Param4', value: Param4), string(name: 'Param5', value: Param5)], quietPeriod: 2, wait: false
}