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

How to enforce parameter ordering in Jenkins DSL?

我们有一个包含三个参数的参数化作业:服务器、用户名和密码。我们希望它们按该顺序显示,但看起来 Jenkins DSL 正在按字母顺序排列它们,因为它们在作业中显示为密码、服务器、用户名。有没有办法指定参数的排序而不是字典顺序,或者我们应该重命名我们的参数以便它们按字母顺序排序?输入密码,然后是服务器,然后是要使用的用户名,这很奇怪。我也很惊讶 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 >

谢谢!

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

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

试试这个:

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