jenkins - 如何将任意数量的参数传递给 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] }
}
....
如果我在 Jenkins 中定义了管道步骤和映射变量,libOne
则会在另一个共享库中调用它:/vars/libTwo
#!/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, ...]
解决方案
作为一个快速的猜测,当您想要传入一个字符串数组(String [])时,您正在传入默认的 Groovy 构造(一个 ArrayList)。幸运的是,这很容易......试试这个?
@Library('myLib ') _
libTwo(param1: 'string ',
param2: 'string',
param3: 'string',
composeFileNames: ['string1','string2'] as String []
推荐阅读
- typescript - 从库默认导出创建类型
- ios - Swift - insertSubview 用法
- javascript - 如何检查对象数组的长度这里对象内部有数组?
- abap - 正确的消息服务器端口 (msserv)?
- javascript - Lodash groupby 多个条件
- java - PostgreSQL 使用 JPA 和 Hibernate 抛出“列类型为 jsonb 但表达式类型为 bytea”
- django - SurveyMonkey:如何按 custom_variables 过滤响应
- c# - Google API vs Google Play vs Intel x86 vs Android TV vs Wear OS Intel x86 系统映像差异
- optimization - 用 LINGO 求解混合整数程序
- solr - 如何将 Solr 作为数据源与 Grafana 集成