2016-07-26 59 views
1

我们有一个参数化的工作,它有三个参数:服务器,用户名和密码。我们希望他们按照这个顺序进行展示,但是看起来Jenkins DSL是按字母顺序排列的,因为他们在工作中以密码,服务器,用户名的形式出现。有没有什么方法可以指定参数而不是lexigraphical,或者我们应该重新命名参数,使它们按字母顺序排序?输入密码,然后是服务器,然后输入要使用的用户名是很奇怪的。我也很惊讶Jenkins DSL没有使用声明的命令来排列params。如何在Jenkins DSL中强制执行参数排序?

这里是常规定义,删节酌情:

<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

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

你的代码片段的问题是你把configure块放在参数闭包里面。 configure仅在job级别可用。在另一个闭包内调用它会导致configure块在包含闭包之前执行。在您的情况下,PASSWORD参数在其他参数之前生成。

试试这个:

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