如何在Jenkins DSL中强制执行参数排序?

时间:2016-07-26 23:57:42

标签: jenkins groovy jenkins-job-dsl

我们有一个参数化的作业,有三个参数:服务器,用户名和密码。我们希望它们按顺序呈现,但看起来Jenkins DSL按字母顺序排列它们,因为它们在作业中显示为密码,服务器,用户名。有没有办法为lexigraphical以外的参数指定排序,或者我们应该重命名我们的参数,以便按字母顺序排序?输入密码很奇怪,然后输入服务器,然后输入要使用的用户名。我也很惊讶Jenkins DSL没有使用声明的订单来订购参数。

这是一个groovy定义,适当地编辑:

< snip >
job("myFolder/seed-jobname") {
  description('This job does stuff on a specified server')
  parameters {
    stringParam('SERVERNAME',
      '',
      'Enter the server to do stuff on'
    )
    stringParam('USERNAME', '', 'Enter your user ID')
    configure {
      it / 'properties' / 'hudson.model.ParametersDefinitionProperty' / parameterDefinitions << 'hudson.model.PasswordParameterDefinition' { 
        name 'PASSWORD'
        description 'Enter your password'
        defaultValue ''
      }
    }
  }
< snip >

谢谢!

1 个答案:

答案 0 :(得分:1)

Jenkins和Job DSL将按指定顺序保留参数。

您的代码段的问题在于您将配置块放在参数闭包中。 configure仅适用于job级别。在另一个闭包内调用它将导致configure块在包含闭包之前执行。在您的情况下,PASSWORD参数在其他参数之前生成。

试试这个:

job('example') {
  parameters {
    stringParam('SERVERNAME')
    stringParam('USERNAME')    
  }
  configure {
    it / 'properties' / 'hudson.model.ParametersDefinitionProperty' / parameterDefinitions << 'hudson.model.PasswordParameterDefinition' { 
      name('PASSWORD')
    }
  }
}