我在Job DSL中有大量的Jenkins作业定义,它们都依赖于我在helper类中实现的一些常用功能.这是jobDsl
运行这些脚本的步骤的本质:
jobDsl {
additionalClasspath('jobdsl/src/main/groovy')
targets('jobdsl/*.groovy')
sandbox(true)
}
Run Code Online (Sandbox Code Playgroud)
其中一个辅助类jobdsl/src/main/groovy
需要从工作区读取文件,但无法访问该readFileFromWorkspace
函数.
所以这个不行:
class MyHelper {
static Closure processFile(String src) {
...
def txt = readFileFromWorkspace(src)
...
}
}
Run Code Online (Sandbox Code Playgroud)
我必须改为使用一个闭包参数:
class MyHelper {
static Closure processFile(String src, Closure rffw) {
...
def txt = rffw(src)
...
}
}
Run Code Online (Sandbox Code Playgroud)
这使得调用此帮助程序的代码变得臃肿:
MyHelper.processFile('foo.txt', { readFileFromWorkspace(it) })
Run Code Online (Sandbox Code Playgroud)
有没有办法让我的课看到readFileFromWorkspace
?实际上,我甚至无法弄清楚这个函数属于哪个类.或者它是一个真正的功能还是由DSL定义的"神奇"的东西.