2017-02-16 13 views
0

私のjenkinsfileの中にいくつかの依存関係に基づいて複数のプロパティを設定したい。条件がJenkins Groovy extendsプロパティ配列

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

私は問題が満たされた場合、私は別のパラメータを設定したいの下

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

一部の行:

だから私のjenkinsfileの上に私は私の最初のパラメータを設定しています今実行しているのは、2番目のパラメータが最初のパラメータをオーバーライドしているということです。これを正しく処理する方法は?

答えて

2

propertiesステップは、既存のジョブプロパティをオーバーライドするので、2番目の呼び出しが前の呼び出しを上書きします。これは予想される動作です。あなたがする必要がどのような

新しいパラメータのリストを保持し、その後propertiesステップへの単一の呼び出しを使用することです:私たちは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'が必要とされています。その他のタイプのパラメータについては、サブクラスをthis classに設定してください。

+0

私はこれを明日試してこのスレッドを更新します。 – Basti

+1

テスト済みで承認済みです。これを読んでいる人のための1つの注意、あなたはあなたのjenkinsfileの上にあなたのパラメータを準備する必要があります。後でそれらを追加すると私の場合に問題が発生しました。 – Basti

関連する問題