2016-10-08 23 views
3

私はすでに定義されたジョブを、ビルドメソッドを使用してjenkinsパイプラインで実行しようとしています。 これは単純な例です:Jenkinsパイプライン - パラメータを使用して構築

build('jenkins-test-project-build', param1 : 'some-value') 

しかし、私はそれを実行しようとすると、私はエラーを取得:

java.lang.IllegalArgumentException: Expected named arguments but got [{param1=some-value}, jenkins-test-project-build] 
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:442) 
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:380) 
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:156) 
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126) 
............... 

答えて

5

あなたは属性の名前を渡していなかったので、あなたは、このエラーを取得しています'jenkins-test-project-build'を格納する必要があります。

ジョブの属性を渡す必要があります。ここで

build(job: 'jenkins-test-project-build', param1 : 'some-value') 

は、利用可能なオプション( pipeline-build-step)のリストです:

  • 仕事
  • (別売)(別売)
  • quietPeriod(オプション)
  • 待機
  • 伝播パラメータ(オプション)
10

ビルドコールに複数の問題があります。 sshepelがそれをmentionnedとして複数の(あなたが唯一のデフォルトパラメータjobを使用する場合にのみ、それに名前を付けることを忘れすることができ、例えばbuild 'my-simple-job-without-params')を持っている場合

まず、あなたはあなたのパラメータに名前を付ける必要があります。

第2の問題は、が正しくパラメータを渡さないことです。です。ダウンストリームジョブにパラメータを渡すには、parametersという名前のパラメータを使用し、各パラメータを定義するオブジェクトの配列を渡す必要があります。 :

build job: 'jenkins-test-project-build', parameters: [[$class: 'StringParameterValue', name: 'param1', value: "some-value" ]] 

また、括弧はGroovyメソッド呼び出しではオプションです。

+0

確かに..最初の問題を解決した後でこの問題が見つかりました:Dありがとうございました – andi

+3

私のために動作するようにパラメータを渡すために少し異なる構文を使用しなければなりませんでした: 'build job: 'jenkins-test -project-build '、パラメータ:[string(name:' param1 '、value: "some-value")] ' – Zoodor

0

特定のjenkinsサーバーのパイプラインコードジェネレーターを使用してコードを生成します。私の場合、これはバージョンの不一致のために起こりました。開発用に異なるバージョンを使用し、それぞれ異なる構文を使用してジョブを呼び出すパラメータを渡します。

関連する問題