2017-11-02 14 views
2

私はJenkinsをパイプラインで使用しており、Jenkinsfileを使用してのスクリプトパイプラインを定義しました。GDSLを使用したIntelliJのJenkinsパイプライン。警告: 'node'は '(groovy.lang.closure <Object>)'には適用できません。

node { 
    /* some stages */ 
} 

Jenkinsに付属のGDSLファイルをIntelliJにインポートしました。今私は、構文の強調表示を得たが、ファイル全体をIntelliJのは、以下のようなメッセージを示している1つの警告ブロックで強調表示されている:私はそれがノードオブジェクトは、構文定義によってルートとしてサポートされていないことかもしれないと思った

'node' cannot be applied to '(groovy.lang.closure<Object>)' 

をしかし、私がpipelineをrootとして書き込もうとすると、同じ警告が表示されます。

答えて

4

解決策が見つかりました。 pipeline.gdslファイル(例えば、Jenkinsからダウンロードされ、私たちによってIntelliJに置かれたGDSLファイル)には小さな変更が必要です。

GDSLファイルに次の行を検索します。

method(name: 'node', type: 'Object', 
     params: [label:java.lang.String, body:'Closure'], 
     doc: 'Allocate node') 

を、前のものに加えて、次の行を追加します。

method(name: 'node', type: 'Object', 
     params: [body:'Closure'], 
     doc: 'Allocate node') 

これは伝え構文ツリーに過負荷定義を作成します。ノードメソッドには、StringClosureの両方を受け入れる2つのバージョンと、Closureのみを受け入れる別のバージョンがあります。

+0

Jenkins Jiraのトラッキングに関する問題:https://issues.jenkins-ci.org/browse/JENKINS-39488 – lanoxx

関連する問題