Как передать произвольное количество аргументов в общую библиотеку Jenkins - PullRequest
0 голосов
/ 20 февраля 2019

Я получил эту общую библиотеку vars/libOne, которая принимает параметр composeFileNames в виде списка строк.

#!/usr/bin/env groov


def call(String param1, String param2, String parm3, String[] composeFileNames ) {

        String s =''
        for (int i = 0; i < composeFileNames.size(); i++) { s +=' -f ./'+ composeFileNames[i] }
               } 
....

это libOne вызывается в другой общей библиотеке /vars/libTwo, если я определил шаги конвейера и переменные Map, которые я передаю в Jenkins:

#!/usr/bin/env groovy
def call(Map pipelineParams) {
    node (...) {
      stage("call libOne"){
                libOne (pipelineParams.param1, pipelineParams.param2, pipelineParams.param3, pipelineParams.composeFileNames  )
}

Я хочу вызвать мой libTwoв jenkins и передайте два параметра String как composeFileNames:

@Library('myLib ') _
        libTwo(param1: 'string ',
               param2: 'string',
               param3: 'string',
               composeFileNames: ['string1','string2']

)

Вопрос в том, как мне сделать это правильно, потому что приведенный выше код выдает мне ошибку:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: dockerComposeVicDeploy.call() is applicable for argument types: (java.lang.String, java.lang.String, java.lang.String, java.util.ArrayList) values: [param1, pamam2, param3, ...]

1 Ответ

0 голосов
/ 20 февраля 2019

В качестве быстрого предположения вы передаете конструкцию Groovy по умолчанию (ArrayList), когда хотите передать массив String (String []).К счастью, это просто ... попробовать?

@Library('myLib ') _
        libTwo(param1: 'string ',
               param2: 'string',
               param3: 'string',
               composeFileNames: ['string1','string2'] as String []

Как преобразовать коллекцию Groovy String в массив строк Java?

...