【问题标题】:Jenkins Groovy extend properties arrayJenkins Groovy 扩展属性数组
【发布时间】:2017-07-05 18:18:34
【问题描述】:

在我的 jenkinsfile 中,我想根据一些依赖项设置多个属性。

所以在我的 jenkinsfile 顶部我设置了我的第一个参数:

properties([
  parameters([
    booleanParam(
      defaultValue: false,
      description: '...',
      name: 'parameters1'
    ),
  ])
])

如果满足条件,下面的一些行我想设置另一个参数

if(awesomeCondition) {
  properties([
    parameters([
      booleanParam(
        defaultValue: false,
        description: '...',
        name: 'parameters2'
      ),
    ])
  ])
}

我现在遇到的问题是第二个参数覆盖了第一个参数。如何正确处理?

【问题讨论】:

    标签: arrays jenkins groovy parameters properties


    【解决方案1】:

    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 的子类。

    【讨论】:

    • 不错,我明天试试,然后更新这个帖子。
    • 经过测试和批准。其他阅读本文的人需要注意的是,您应该在 jenkinsfile 的顶部准备好参数。稍后添加它们会导致我的情况出现问题。
    猜你喜欢
    • 2018-05-22
    • 2014-09-03
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多