如何在Jenkins Job DSL插件的上下文中使用共享/通用的常规方法

时间:2019-04-08 22:28:22

标签: jenkins groovy

使用GroovyConsole我有以下文件main.groovy:

new Helpers().test("test method called")

在同一目录中具有内容的Helpers.groovy文件

def test(String str) {
    println "test method called with: " + str
}

在结果中运行结果:

groovy> new Helpers().test("test method called") 

test method called with: test method called

但是,在Jenkins使用DSL的情况下,我在文件generator.groovy中有类似的代码:

new Helpers().test("test method called")

然后在具有相同目录的Helpers.groovy中:

def test(String str) {
    println("test method called on: " + str)
}

但是,当我运行时,在日志中没有任何输出(来自println)。 如果我的def位于同一main.groovy文件中,则可以正常工作。

可能缺少一些基本知识。它在jenkins中正在编译/绿色,因此不确定如何适应它,因此运行时将执行我想要的操作。

1 个答案:

答案 0 :(得分:0)

other files调用方法时,您需要导入类

  

在与DSL相同级别上创建一个名为Utility的目录,并在Utilitys目录中创建一个名为MyUtilities.groovy的文件,其内容如下:

package utilities

class MyUtilities {
    static void addMyFeature(def job) {
        job.with {
            description('Arbitrary feature')
        }
    }
}
     

然后从DSL中添加如下内容:

import utilities.MyUtilities