如何在 Jenkins DSL 文件中启用沙盒"Use Groovy Sandbox"选项?



我必须手动配置作业并勾选"使用Groovy Sandbox"选项,以便开始反映我的主动选择参数和主动选择反应参数的值。我希望避免这个手动步骤,并希望从DSL文件本身启用它。

我在DSL文件中添加了sanbox(true),如下所示:


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")
}
}
}

但这给出了以下例外:

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

也许您可以尝试在choiceType('SINGLE_SELECT'(下面添加sandboxScript(true(,但不要将其添加到groovyScript的闭包中。

最新更新