Hi,
I was wondering what the technical limitations are for a workflow Groovy script, more specifically:
1) Is is possible to use classes like StringBuilder?
Example:
stage 'tryout'
node {
useStringBuilder()
}
def useStringBuilder() {
echo "Before usage"
StringBuilder test = new StringBuilder()
echo "After usage"
}
If I use this method my in my flow.groovy script, the job never seems to print out "After usage". Instead I get the message: "org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use new java.lang.StringBuilder". Are "restricted" classes documented somewhere? Why is there a restriction?
2) Can you define your own classes within the Groovy script?
stage 'tryout'
node {
new HelloWorld().printMessage()
}
class HelloWorld {
def printMessage() {
echo "Hello World"
}
}
If I create an instance of a custom class, I get the following message: "org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.lang.GroovyObject invokeMethod java.lang.String java.lang.Object".
3) Is there a way to reuse methods or classes across multiple jobs? How do you envision reusable code?
In all of these cases, I'd like to consume an existing, checked-in Groovy script via "Groovy CPS DSL from SCM".
Thanks,
Ben