在Jenkins管道中,可以使用
请求输入数据def returnValue = input message: 'Need some input',
parameters: [string(defaultValue: 'adefval', description: 'a', name: 'aaa'),
string(defaultValue: 'bdefval', description: 'b', name: 'bbb')]
为了动态构建这样的列表,我尝试了类似
的东西def list = ["foo","bar"]
def inputRequest = list.collect { string(defaultValue: "def", description: 'description', name: it) }
def returnValue = input message: 'Need some input', parameters: [inputRequest]
这不起作用:
java.lang.ClassCastException:class org.jenkinsci.plugins.workflow.support.steps.input.InputStep.setParameters()需要类hudson.model.ParameterDefinition但是收到类java.util.ArrayList
可能Groovy可以在第一种情况下动态地找出哪个对象是必需的,但在第二种情况下它不再起作用,因为collect返回一个ArrayList?
如何正确创建这样的列表?
编辑:也许这个问题本身并不是很有用,但仍可作为代码示例......
答案 0 :(得分:0)
好的,这是一个非常简单的修复,因为收集已经返回ArrayList
,在设置参数时不应该将其包装到另一个列表中...
def returnValue = input message: 'Need some input', parameters: inputRequest
答案 1 :(得分:0)
您可以使用以下代码。它将为您生成选择A,B,C。这可以通过使用Jenkins中的“管道语法”选项来找到。我使用它是因为它可以节省时间并减少错别字。
def createInputParameters(){
properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled:
false],parameters([choice(choices: ['A', 'B', 'C'], description: '', name:
'Test')]),
[$class: 'ThrottleJobProperty', categories: [],
limitOneJobWithMatchingParams: false,
maxConcurrentPerNode: 0, maxConcurrentTotal: 0,
paramsToUseForLimit: '',
throttleEnabled: false,
throttleOption: 'project']])
}