在我的jenkinsfile中,我想根据一些依赖项设置多个属性。
所以在我的jenkins文件的顶部我设置了我的第一个参数:
properties([
parameters([
booleanParam(
defaultValue: false,
description: '...',
name: 'parameters1'
),
])
])
如果满足条件,我想在下面的一些行中设置另一个参数
if(awesomeCondition) {
properties([
parameters([
booleanParam(
defaultValue: false,
description: '...',
name: 'parameters2'
),
])
])
}
我现在遇到的问题是第二个参数覆盖了第一个参数。如何正确处理?
答案 0 :(得分:2)
properties
步骤会覆盖现有作业属性,因此,如您所述,第二个调用会覆盖前一个调用。这是预期的行为。
您需要做的是保留一个新参数列表,然后使用一次调用properties
步骤:
def newParameters = []
newParameters.add([
$class: 'hudson.model.BooleanParameterDefinition',
name: "p1",
default: false,
description:"Some help text"
])
...
if(awesomeCondition) {
newParameters.add([
$class: 'hudson.model.BooleanParameterDefinition',
name: "p2",
default: false,
description:"Some help text"
])
}
...
properties([parameters(newParameters)])
因为我们正在创建$class: 'hudson.model.BooleanParameterDefinition'
步骤之外的对象,所以需要properties
。对于其他类型的参数,请参阅this class的子类。