在詹金斯工作 dsl 中使用 类
using classes in jenkins job dsl
大家好,我有一个问题,我似乎无法解决。
所以我正在创建一些助手 classes 供我的 dsl 使用,但它似乎没有在这些 classes 中执行任何方法。
我创建了一个包含以下 dsl 的作业:
class TestIt {
def static helloStatic() {
println "[STATIC] - Hello"
}
def hello() {
println "[NORMAL] - Hello"
}
}
def runIt() {
println "Starting test"
println "-------------"
TestIt _test = new TestIt()
_test.hello();
TestIt.helloStatic();
println "-------------"
println "Done"
}
runIt();
TestIt.helloStatic();
当我 运行 使用 jenkins 完成这项工作时,它 display/execute 既不是静态方法也不是普通方法。我是否需要以某种方式在当前 运行ning 上下文中注入 class 或执行其他操作?
另请注意,如果我 运行 从命令行使用完全相同的脚本,使用 github 版本的作业 dsl 插件和 gradle,那么脚本会调用方法。
在脚本中使用 println 时(在您的示例中,在 runIt
函数中),Groovy 将调用发送到脚本绑定中定义的 out
变量或 System.out.println
如果未设置变量。 Job DSL 插件设置此变量,以便输出进入构建日志。
在 classes 中使用 println 时(在您的示例中,TestIt
class),将调用 System.out.println
。所以输出被发送到标准输出。根据您启动 Jenkins 的方式,stdout 是例如登录控制台或 /var/log/jenkins/jenkins.log
.
要将 classes 的输出发送到构建日志,您需要将 out
变量传递给您的 class:
class TestIt {
def out
def static helloStatic(def out) {
out.println "[STATIC] - Hello"
}
def hello() {
out.println "[NORMAL] - Hello"
}
}
def runIt() {
println "Starting test"
println "-------------"
TestIt _test = new TestIt(out: out)
_test.hello();
TestIt.helloStatic(out);
println "-------------"
println "Done"
}
runIt();
TestIt.helloStatic(out);
大家好,我有一个问题,我似乎无法解决。
所以我正在创建一些助手 classes 供我的 dsl 使用,但它似乎没有在这些 classes 中执行任何方法。
我创建了一个包含以下 dsl 的作业:
class TestIt {
def static helloStatic() {
println "[STATIC] - Hello"
}
def hello() {
println "[NORMAL] - Hello"
}
}
def runIt() {
println "Starting test"
println "-------------"
TestIt _test = new TestIt()
_test.hello();
TestIt.helloStatic();
println "-------------"
println "Done"
}
runIt();
TestIt.helloStatic();
当我 运行 使用 jenkins 完成这项工作时,它 display/execute 既不是静态方法也不是普通方法。我是否需要以某种方式在当前 运行ning 上下文中注入 class 或执行其他操作?
另请注意,如果我 运行 从命令行使用完全相同的脚本,使用 github 版本的作业 dsl 插件和 gradle,那么脚本会调用方法。
在脚本中使用 println 时(在您的示例中,在 runIt
函数中),Groovy 将调用发送到脚本绑定中定义的 out
变量或 System.out.println
如果未设置变量。 Job DSL 插件设置此变量,以便输出进入构建日志。
在 classes 中使用 println 时(在您的示例中,TestIt
class),将调用 System.out.println
。所以输出被发送到标准输出。根据您启动 Jenkins 的方式,stdout 是例如登录控制台或 /var/log/jenkins/jenkins.log
.
要将 classes 的输出发送到构建日志,您需要将 out
变量传递给您的 class:
class TestIt {
def out
def static helloStatic(def out) {
out.println "[STATIC] - Hello"
}
def hello() {
out.println "[NORMAL] - Hello"
}
}
def runIt() {
println "Starting test"
println "-------------"
TestIt _test = new TestIt(out: out)
_test.hello();
TestIt.helloStatic(out);
println "-------------"
println "Done"
}
runIt();
TestIt.helloStatic(out);