IIUC, for the moment only GStrings are whitelisted: see https://github.com/jenkinsci/workflow-plugin/blob/master/cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsWhitelist.java#L54
I guess we'll need feedback of Jesse or Kohsuke as to where they want to go about that: filing JIRAs for classes to be whitelisted? another way? IMO this is still a WIP, as you can for example read in the changelog some weeks ago - Flow scripts may now be run in a Groovy sandbox to allow regular users to define them without administrator approval. More work is likely needed to supply a reasonable method call whitelist out of the box. <https://github.com/jenkinsci/workflow-plugin/blob/master/CHANGES.md#01-beta-5> Cheers 2015-02-07 8:45 GMT+01:00 Baptiste Mathus <[email protected]>: > Hi, > As the inline documentation (see the question marks on the right), this is > because your code runs in sandboxed mode/you're not an admin: > if *Use Groovy Sandbox* is checked, or you are not an administrator, not > all APIs will be available. > > (Though I somehow agree that at first sight StringBuilder could be > whitelisted). > > About sharing libraries, I guess this doc could help: > https://github.com/jenkinsci/workflow-plugin/blob/master/cps-global-lib/README.md > > HTH > > 2015-02-06 21:01 GMT+01:00 Benjamin Muschko <[email protected]>: > >> 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 >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Jenkins Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/jenkinsci-users/2410ce55-ad9d-4d2b-b63c-6ebd633b85b5%40googlegroups.com >> <https://groups.google.com/d/msgid/jenkinsci-users/2410ce55-ad9d-4d2b-b63c-6ebd633b85b5%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Baptiste <Batmat> MATHUS - http://batmat.net > Sauvez un arbre, > Mangez un castor ! > > -- > Baptiste <Batmat> MATHUS - http://batmat.net > Sauvez un arbre, > Mangez un castor ! > nbsp;! > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CANWgJS4-OEjM1YujB6FS%2B2hMZc6nw%3DTDsvPotvZk_aT62w_JzA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
