Как передать произвольное количество аргументов в общую библиотеку Jenkins
Я получил эту общую библиотеку 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 ответ
Решение
В качестве быстрого предположения вы передаете конструкцию Groovy по умолчанию (ArrayList), когда хотите передать массив String (String []). К счастью, это легко... попробовать?
@Library('myLib ') _
libTwo(param1: 'string ',
param2: 'string',
param3: 'string',
composeFileNames: ['string1','string2'] as String []
Как преобразовать коллекцию Groovy String в массив строк Java?