2016-07-26 57 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') 
    } 
    } 
}