Hi, I want to load a groovy script and execute methods of that script in a simple scripted pipeline. but it failed to run the groovy script when loading the groovy script, the script is very simple, I tested it on my local computer, it ran successfully, I have the following configuration: //Jenkinsfile node("master"){ stage("test1"){ checkout([$class: 'GitSCM', branches: [[name: "refs/heads/master"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxx', url: "git@xxx:xxx.git"]]]) def script=load "${env.WORKSPACE}/scripts/debug1.groovy" script.hello() } } //scripts/debug1.groovy def initVariableBindings() { def tempArr=["WORKSPACE"] tempArr.each { if (System.getenv(it) != null) { this.binding.setProperty(it, System.getenv(it)) } else if (System.getProperty(it) != null) { this.binding.setProperty(it, System.getProperty(it)) } else { println "Failed to init variable "+ it; } } } def hello(){ println "hello ${WORKSPACE}" } initVariableBindings() it throws the following exception:
groovy.lang.MissingFieldException: No such field: binding for class: Script1
at groovy.lang.MetaClassImpl.getAttribute(MetaClassImpl.java:2846)
at groovy.lang.MetaClassImpl.getAttribute(MetaClassImpl.java:3782)
at org.codehaus.groovy.runtime.InvokerHelper.getAttribute(InvokerHelper.java:147)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getField(ScriptBytecodeAdapter.java:306)
at org.kohsuke.groovy.sandbox.impl.Checker$9.call(Checker.java:437)
at org.kohsuke.groovy.sandbox.GroovyInterceptor.onGetAttribute(GroovyInterceptor.java:96)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetAttribute(SandboxInterceptor.java:438)
at org.kohsuke.groovy.sandbox.impl.Checker$9.call(Checker.java:434)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetAttribute(Checker.java:439)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getAttribute(SandboxInvoker.java:37)
at com.cloudbees.groovy.cps.impl.AttributeAccessBlock.rawGet(AttributeAccessBlock.java:20)
at Script1.initVariableBindings(Script1.groovy:8)
at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:2030)
at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:2015)
at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:2056)
at Script1.initVariableBindings(Script1.groovy:4)
at Script1.run(Script1.groovy:17)
at ___cps.transform___(Native Method) .... it complains that the List variable tempArr in the function
initVariableBindings is not a binding property, but it is a local variable, it should work, is this normal behavior and why or a bug of groovy plugin? Thanks.
-- 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 [hidden email]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/04d955dd-e2ce-4802-b195-dacb991d7fecn%40googlegroups.com. |
Free forum by Nabble | Edit this page |