简体   繁体   English

如何将任意数量的参数传递给Jenkins共享库

[英]How to pass arbitrary number of arguments to Jenkins shared library

I got this shared library vars/libOne that takes composeFileNames parameter as a list of strings. 我得到了这个共享库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] }
               } 
....

this libOne is called in another shared library /vars/libTwo were I defined pipeline steps and Map variables I pass in Jenkins: 这个libOne在另一个共享库/vars/libTwo/vars/libTwo ,我定义了管道步骤,并在Jenkins中传递了Map变量:

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

I want to call my libTwo in jenkins and pass two String parameters as composeFileNames : 我想在jenkins中调用我的libTwo并传递两个String参数作为composeFileNames

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

)

The question is how do I do that correctly , because the above code gives me the error: 问题是如何正确执行此操作,因为上述代码给了我错误:

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, ...]

As a quick guess, you're passing in the default Groovy construct (an ArrayList), when you want to pass in a String array (String []). 快速猜测,当您要传递String数组(String [])时,您将传递默认的Groovy构造(ArrayList)。 Luckily, that's easy... give this a try? 幸运的是,这很容易...试试看吗?

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

How do I convert a Groovy String collection to a Java String Array? 如何将Groovy String集合转换为Java String数组?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM