如何在 groovy 类 中使用 Jenkins Job DSL 插件的闭包

How to use closures of Jenkins Job DSL Plugin within groovy classes

我是 Job DSL 插件的新手,甚至 Groovy。

给定以下脚本:

class MyClass {
    def create() {  
        folder('test') {
        }   
    }
}

new MyClass().create()

我收到以下错误:

javaposse.jobdsl.dsl.DslScriptException: (script, line 3) No signature of method: MyClass.folder() is applicable for argument types: (java.lang.String, MyClass$_create_closure1) values: [test, MyClass$_create_closure1@62591600] Possible solutions: find(), collect()

好的,明白了。 Groovy 在我的 class 中找不到名为 "folder" 的方法。但这不是一种方法。这是一个作业 DSL 命令。我如何在 classes 中使用它们?

您需要将脚本引用传递到您的 class,请参阅 Job DSL wiki

class MyClass {
    def create(def dslFactory) {  
        dslFactory.folder('test') {
        }   
    }
}

new MyClass().create(this)