I finally figured out how to set an environment variable to a string that
depends on a build parameter in Job DSL using the groovy() method in
a EnvironmentVariableContext. Now my problem is how to run the groovy
script in the sandbox so it won't need to be authorized.
A form of the DSL:
def testJob(){
this.jobFactory.job("Tests/testJob"){
parameters {
booleanParam("DRYRUN", true, "Check to dryrun.")
}
environmentVariables{
env("ONE", 1)
groovy('''return [RUN: DRYRUN == 'true' ? ' --dryrun ' :
'']''')
}
steps{
shell(*'echo RUN=$RUN'*)
}
}
}
Generates this job portion
<https://lh3.googleusercontent.com/-MjumGIiTiFI/WvOCTRMFGpI/AAAAAAAAAAM/FcQdTdJwPc8dmTNlzx8j0iZfyiPsdVOxgCLcBGAs/s1600/Screen%2BShot%2B2018-05-09%2Bat%2B4.20.33%2BPM.png>
The job fails because the script is not approved.
[EnvInject] - Evaluating the Groovy script content
ERROR: SEVERE ERROR occursorg.jenkinsci.lib.envinject.EnvInjectException
<http://stacktrace.jenkins-ci.org/search?query=org.jenkinsci.lib.envinject.EnvInjectException>:
Failed to evaluate the script
at
org.jenkinsci.plugins.envinject.service.EnvInjectEnvVars.executeGroovyScript(EnvInjectEnvVars.java:232)
<http://stacktrace.jenkins-ci.org/search/?query=org.jenkinsci.plugins.envinject.service.EnvInjectEnvVars.executeGroovyScript&entity=method>
at
org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironmentJobPropertyObject(EnvInjectListener.java:187)
<http://stacktrace.jenkins-ci.org/search/?query=org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironmentJobPropertyObject&entity=method>
at
org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironment(EnvInjectListener.java:49)
<http://stacktrace.jenkins-ci.org/search/?query=org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironment&entity=method>
at
hudson.model.AbstractBuild$AbstractBuildExecution.createLauncher(AbstractBuild.java:572)
<http://stacktrace.jenkins-ci.org/search/?query=hudson.model.AbstractBuild$AbstractBuildExecution.createLauncher&entity=method>
at
hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:492)
<http://stacktrace.jenkins-ci.org/search/?query=hudson.model.AbstractBuild$AbstractBuildExecution.run&entity=method>
at hudson.model.Run.execute(Run.java:1728)
<http://stacktrace.jenkins-ci.org/search/?query=hudson.model.Run.execute&entity=method>
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
<http://stacktrace.jenkins-ci.org/search/?query=hudson.model.FreeStyleBuild.run&entity=method>
at hudson.model.ResourceController.execute(ResourceController.java:98)
<http://stacktrace.jenkins-ci.org/search/?query=hudson.model.ResourceController.execute&entity=method>
at hudson.model.Executor.run(Executor.java:404)
<http://stacktrace.jenkins-ci.org/search/?query=hudson.model.Executor.run&entity=method>
Caused by:
org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException
<http://stacktrace.jenkins-ci.org/search?query=org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException>:
script not yet approved for use
at
org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.using(ScriptApproval.java:459)
<http://stacktrace.jenkins-ci.org/search/?query=org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.using&entity=method>
at
org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:170)
<http://stacktrace.jenkins-ci.org/search/?query=org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate&entity=method>
at
org.jenkinsci.plugins.envinject.service.EnvInjectEnvVars.executeGroovyScript(EnvInjectEnvVars.java:230)
<http://stacktrace.jenkins-ci.org/search/?query=org.jenkinsci.plugins.envinject.service.EnvInjectEnvVars.executeGroovyScript&entity=method>
... 8 more
But if I check the "Use Groovy Sandbox" the script runs fine.
How can I check the "Use Groovy Sandbox" from Job DSL?
Thanks a ton,
Chris
--
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/741b10d0-68c9-465a-a16e-293987f39953%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.