簡體   English   中英

如何將任意數量的參數傳遞給Jenkins共享庫

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

我得到了這個共享庫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/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  )
}

我想在jenkins中調用我的libTwo並傳遞兩個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, ...]

快速猜測,當您要傳遞String數組(String [])時,您將傳遞默認的Groovy構造(ArrayList)。 幸運的是,這很容易...試試看嗎?

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

如何將Groovy String集合轉換為Java String數組?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM