2016-12-11 8 views
0

私はパイプラインでパラメータ化されたジョブを持っています。例えば :事前定義された文字列パラメータ:私は別の「建てる仕事」私が持っているjinkinsパイプラインdef新しい文字列パラメータ

に呼んでいるとき、私は新しいパラメータとしてそれを使用するためにパイプラインで新しい文字列を定義しようとしている IP

import hudson.model.* 
node('master'){ 
if(ipaddr =='192.168.1.1'){ 
    def parameter = new StringParameterValue("subnet", '255.255.255.0') //not working 
    echo parameter //not working 
} 

stage ('Stage A'){ 
    build job: 'jobA', parameters: 
[ 
    [$class: 'StringParameterValue', name: 'ip', value: ip], 
    [$class: 'StringParameterValue', name: 'subnet', value: subnet] //not working 
] 
} 
} 

それは働いていないと、私はエラーを取得するこの方法は:次の方法に試してみました

Scripts not permitted to use new hudson.model.StringParameterValue

ラインを変更した後:

def parameter = new StringParameterValue("subnet", '255.255.255.0') 

subnet = '255.255.255.0' 

私はエラーを得た:

groovy.lang.MissingPropertyException: No such property: subnetmask for class: groovy.lang.Binding.

私は事前に定義されたパラメータIPと新しいパラメータサブネットで新しい仕事に呼び出すことはできません

su bnetそれは働いています

私はパイプラインで新しい文字列パラメータをどのように定義できますか?

ジェンキンスバージョン:2.19.4デフォルトで

答えて

3

StringParameterValueのインスタンス化を回避すると、David M. Karrが記述したパイプラインサンドボックスは非常に制限されているため、動作させることができます。

def subnet = "" 
if(ipaddr == '192.168.1.1') { 
    subnet = '255.255.255.0' 
    echo subnet 
} 

stage ('Stage A'){ 
    build job: 'jobA', parameters: 
    [ 
     [$class: 'StringParameterValue', name: 'ip', value: ipaddr], 
     [$class: 'StringParameterValue', name: 'subnet', value: subnet] 
    ] 
} 

それは、StringParameterValueかなりシンプルだのparamsので、限り、あなたはあなただけの罰金する必要があり、文字列値を渡すように、文字列が渡されることを期待:あなたの仕事を呼び出すときに代わりに、ちょうどこのように、あなたの単純な変数を使用します!

+0

ありがとう@ Pom12が、私はエラーが発生しました:groovy.lang.MissingPropertyException:いいえそのようなプロパティ:クラスのサブネットマスク:groovy.lang.Binding。何か案が? – dsaydon

+0

最初の投稿を編集して、今現在行っていることを反映できますか? – Pom12

+0

私が見るところでは、あなたは 'subnet'変数を呼び出しましたが、' subnetmask'変数をパラメータとして渡そうとしました...あなたの命名が正しいことを確認してください – Pom12

0

は、パイプラインのジョブが実行中でサンドボックスが非常に制限されています。セキュリティ制限を見つけるときは、その制限を無効にする必要があります。 「Manage Jenkins」と「In-process Script Approval」に進みます。最後に発生した違反をリストに表示する必要があります。承認のために選択し、スクリプトを再実行します。

+0

ありがとう@David M. Karr ..これがパイプラインに新しいパラメータを作成する唯一の方法であるかどうか知っていますか? – dsaydon

+0

パイプラインジョブのコード内で、下流のパイプラインにパラメータを追加しようとしています。パイプラインジョブにパラメータを追加するのは簡単です。下流のパイプラインジョブにパラメータを追加する方法がわかりません。 –

関連する問題