0

I have to manually configure the job and tick the "Use Groovy Sandbox" option in order to start reflecting the values for my Active Choice Parameter and Active Choice Reactive Parameters. I want to avoid this manual step and want to enable it from the DSL file itself.

I added sanbox(true) in my DSL file as below:


pipelineJob("mar/common/mysql-sync") {
    description("Jenkins Job to sync lower env DBs with prod")
    logRotator{numToKeep(5)}
    parameters {
        activeChoiceParam('environment') {
                      description('Select the Environment for the DB you wish to restore')
                      choiceType('SINGLE_SELECT')
                      groovyScript {
                          script("return['dev','staging']")
                          sandbox(true)
                          fallbackScript('return ["ERROR"]')
                          sandbox(true)
                      }
                  }

        activeChoiceReactiveParam('DB_HOST') {
                      description('Select the DB you wish to restore')
                      choiceType('SINGLE_SELECT')
                      groovyScript {
                          script("if(environment.equals('dev')){return ['mysql-test-dev.cgdrbdgdfgdgjok.eu-west-1.rds.amazonaws.com']} else {return ['mysql-test-staging.cgdrfgefredhjok.eu-west-1.rds.amazonaws.com']}")
                          sandbox(true)
                          fallbackScript('return ["ERROR"]')
                          sandbox(true)
                      }    
                      referencedParameter('environment')
                  }                  
    }   
    definition {
        cpsScm {
            scm {
                git {
                    remote {
                        url('git@github.com:allen/jenkins-jobs.git')
                        credentials('github-jenkins-ssh')
                    }
                    branches('master')
                    extensions {
                        cleanBeforeCheckout()
                    }
                }
            }
            scriptPath("jenkins-pipelines/custom/s3-to-mysql-restore.groovy")
        }
    }
}

But this gives the following exception:

javaposse.jobdsl.dsl.DslScriptException: (script, line 10) No signature of method: javaposse.jobdsl.dsl.helpers.parameter.ActiveChoiceGroovyScriptContext.sandbox() is applicable for argument types: (java.lang.Boolean) values: [true]
    at javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScriptEngine(AbstractDslScriptLoader.groovy:114)
    at javaposse.jobdsl.dsl.AbstractDslScriptLoader$_runScripts_closure1.doCall(AbstractDslScriptLoader.groovy:61)
    at javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScripts(AbstractDslScriptLoader.groovy:46)
    at javaposse.jobdsl.dsl.AbstractDslScriptLoader$runScripts$0.callCurrent(Unknown Source)
    at javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScript(AbstractDslScriptLoader.groovy:87)
    at javaposse.jobdsl.dsl.AbstractDslScriptLoader$runScript.call(Unknown Source)
    at com.sheehan.jobdsl.DslScriptExecutor.execute(DslScriptExecutor.groovy:27)
    at com.sheehan.jobdsl.ScriptExecutor$execute.call(Unknown Source)
    at Ratpack$_run_closure1$_closure3$_closure7$_closure8.doCall(Ratpack.groovy:32)
    at com.sun.proxy.$Proxy10.execute(Unknown Source)
    at ratpack.exec.internal.DefaultPromise$1.success(DefaultPromise.java:42)
    at ratpack.exec.Promise.lambda$null$9(Promise.java:304)
    at ratpack.exec.Downstream$1.success(Downstream.java:73)
    at ratpack.exec.Promise.lambda$null$9(Promise.java:304)
    at ratpack.exec.Downstream$1.success(Downstream.java:73)
    at ratpack.exec.internal.DefaultExecution$2.lambda$success$1(DefaultExecution.java:161)
    at ratpack.exec.internal.DefaultExecution$SingleEventExecStream.exec(DefaultExecution.java:419)
    at ratpack.exec.internal.DefaultExecution.exec(DefaultExecution.java:246)
    at ratpack.exec.internal.DefaultExecution.intercept(DefaultExecution.java:240)
    at ratpack.exec.internal.DefaultExecution.drain(DefaultExecution.java:220)
    at ratpack.exec.internal.DefaultExecution.access$100(DefaultExecution.java:45)
    at ratpack.exec.internal.DefaultExecution$SingleEventExecStream.resume(DefaultExecution.java:452)
    at ratpack.exec.internal.DefaultExecution$2.success(DefaultExecution.java:161)
    at ratpack.server.internal.RequestBody.complete(RequestBody.java:125)
    at ratpack.server.internal.RequestBody.add(RequestBody.java:76)
    at ratpack.server.internal.NettyHandlerAdapter.channelRead(NettyHandlerAdapter.java:84)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:163)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:155)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:163)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:155)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:163)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:155)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:276)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:263)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:163)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:155)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:950)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:818)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:338)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:254)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
    at ratpack.exec.internal.DefaultExecController$ExecControllerBindingThreadFactory.lambda$newThread$0(DefaultExecController.java:113)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
Caused by: groovy.lang.MissingMethodException: No signature of method: javaposse.jobdsl.dsl.helpers.parameter.ActiveChoiceGroovyScriptContext.sandbox() is applicable for argument types: (java.lang.Boolean) values: [true]
    at script$_run_closure1$_closure3$_closure5$_closure7.doCall(script:10)
    at script$_run_closure1$_closure3$_closure5$_closure7.doCall(script)
    at javaposse.jobdsl.dsl.ContextHelper.executeInContext(ContextHelper.groovy:16)
    at javaposse.jobdsl.dsl.ContextHelper$executeInContext.callStatic(Unknown Source)
    at javaposse.jobdsl.dsl.ContextHelper$executeInContext.callStatic(Unknown Source)
    at javaposse.jobdsl.dsl.helpers.parameter.AbstractActiveChoiceContext.groovyScript(AbstractActiveChoiceContext.groovy:24)
    at script$_run_closure1$_closure3$_closure5.doCall(script:8)
    at script$_run_closure1$_closure3$_closure5.doCall(script)
    at javaposse.jobdsl.dsl.ContextHelper.executeInContext(ContextHelper.groovy:16)
    at javaposse.jobdsl.dsl.ContextHelper$executeInContext.call(Unknown Source)
    at javaposse.jobdsl.dsl.ContextHelper$executeInContext.call(Unknown Source)
    at javaposse.jobdsl.dsl.helpers.BuildParametersContext.activeChoiceParam(BuildParametersContext.groovy:246)
    at script$_run_closure1$_closure3.doCall(script:5)
    at script$_run_closure1$_closure3.doCall(script)
    at javaposse.jobdsl.dsl.ContextHelper.executeInContext(ContextHelper.groovy:16)
    at javaposse.jobdsl.dsl.ContextHelper$executeInContext.call(Unknown Source)
    at javaposse.jobdsl.dsl.ContextHelper$executeInContext.call(Unknown Source)
    at javaposse.jobdsl.dsl.Job.parameters(Job.groovy:317)
    at script$_run_closure1.doCall(script:4)
    at javaposse.jobdsl.dsl.JobParent.processItem(JobParent.groovy:239)
    at javaposse.jobdsl.dsl.JobParent.pipelineJob(JobParent.groovy:87)
    at javaposse.jobdsl.dsl.DslFactory$pipelineJob.callCurrent(Unknown Source)
    at script.run(script:1)
    at script$run.call(Unknown Source)
    at script$run.call(Unknown Source)
    at javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScript(AbstractDslScriptLoader.groovy:138)
    at javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScriptEngine(AbstractDslScriptLoader.groovy:108)
    ... 49 more

1 Answers1

0

Maybe you cna try to add sandboxScript(true) below choiceType('SINGLE_SELECT') but don't add it in groovyScript's closure.

  • Thanks for replying but I tried doing what you recommend but it still gives the same error. "javaposse.jobdsl.dsl.DslScriptException: (script, line 8) No signature of method: javaposse.jobdsl.dsl.helpers.parameter.ActiveChoiceContext.sandboxScript() is applicable for argument types: (java.lang.Boolean) values: [true] at javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScriptEngine(AbstractDslScriptLoader.groovy:114)" – Salman Ahsan Nov 03 '22 at 12:58