【问题标题】:How to pass arbitrary number of arguments to Jenkins shared library如何将任意数量的参数传递给 Jenkins 共享库
【发布时间】:2019-07-13 16:58:54
【问题描述】:

我得到了这个共享库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 中被调用,如果我定义了管道步骤和我在Jenkins 中传递的映射变量:

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

我想在 jenkins 中调用我的 libTwo 并将两个字符串参数作为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, ...]

【问题讨论】:

    标签: jenkins groovy jenkins-groovy jenkins-shared-libraries


    【解决方案1】:

    作为一个快速的猜测,当您想要传入一个字符串数组(String [])时,您正在传入默认的 Groovy 构造(一个 ArrayList)。幸运的是,这很简单……试试看?

    @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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-27
      • 2022-11-10
      • 2017-12-18
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多