Hi all I have a problem and I can't seem to figure it out.
So I'm creating some helper classes for my dsl to use, but it just does not seem to execute any method within these classes.
I have created a job with the following dsl in it:
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();
When I run this job with jenkins it does not display/execute either the static or normal method. Do I need to somehow inject the class in the current running context or do something else?
Also note that if I run this exact same script from the command line, using a github version of the job dsl plugin and gradle, then the script does call the methods.
When using println in scripts (in your example, in the
runIt
function), Groovy sends the call to aout
variable defined in the script's binding or toSystem.out.println
if the variable is not set. The Job DSL plugin sets this variable so that the output goes to the build log.When using println in classes (in your example, the
TestIt
class),System.out.println
will be called. So the output is send to stdout. And depending on how you started Jenkins, stdout is e.g. logged the console or/var/log/jenkins/jenkins.log
.To send the output from classes to the build log, you need to pass the
out
variable to your class: