我正在将Jenkins与Pipelines一起使用,并已使用Jenkinsfile
定义了脚本化管道。看起来像这样:
node {
/* some stages */
}
我已经将Jenkins随附的GDSL文件导入到IntelliJ中。现在,我突出显示了语法,但是整个文件都在一个警告块中突出显示,IntelliJ为此显示以下消息:
'node' cannot be applied to '(groovy.lang.closure<Object>)'
我认为语法定义可能不支持将节点对象作为根,但是如果我尝试将
pipeline
作为根来写,则会出现相同的警告。 最佳答案
我找到了解决方案。 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')
这将在语法树中创建一个重载定义,该定义告诉IntelliJ,该节点方法具有两个版本,一个版本既接受
String
和Closure
,又一个版本仅接受Closure
。关于带有GDSL的IntelliJ中的Jenkins管道。警告: 'node' cannot be applied to '(groovy.lang.closure<Object>)' ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47074631/