如何在 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')
}
}
}
我们有一个包含三个参数的参数化作业:服务器、用户名和密码。我们希望它们按该顺序显示,但看起来 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')
}
}
}