2017-02-16 46 views
0

在我的jenkinsfile裏面我想根據一些依賴關係設置多個屬性。Jenkins Groovy擴展屬性數組

所以在我jenkinsfile頂部我設置我的第一個參數:

properties([ 
    parameters([ 
    booleanParam(
     defaultValue: false, 
     description: '...', 
     name: 'parameters1' 
    ), 
    ]) 
]) 

有些線路下面我想設置另一個參數,如果滿足條件

if(awesomeCondition) { 
    properties([ 
    parameters([ 
     booleanParam(
     defaultValue: false, 
     description: '...', 
     name: 'parameters2' 
    ), 
    ]) 
    ]) 
} 

我的問題現在運行的是第二個參數覆蓋第一個參數。如何正確處理這個問題?

回答

2

properties step覆蓋現有的作業屬性,因此,如您所述,第二個調用覆蓋了前一個。這是預期的行爲。

你需要做的就是保持新的參數列表,然後使用一個調用properties步:

def newParameters = [] 
newParameters.add([ 
    $class: 'hudson.model.BooleanParameterDefinition', 
    name: "p1", 
    default: false, 
    description:"Some help text" 
]) 
... 
if(awesomeCondition) { 
    newParameters.add([ 
    $class: 'hudson.model.BooleanParameterDefinition', 
    name: "p2", 
    default: false, 
    description:"Some help text" 
    ]) 
} 
... 
properties([parameters(newParameters)]) 

$class: 'hudson.model.BooleanParameterDefinition'是必要的,因爲我們正在創建的properties步外的對象。對於其他類型的參數,請參閱this class的子類。

+0

不錯,我會明天再試試這個,然後更新這個線程。 – Basti

+1

經過測試和認可。對於讀這個的其他人來說,你應該在你的jenkins文件的頂部準備你的參數。稍後添加它們會導致我遇到的問題。 – Basti