【博文精选】jenkins pipeline取消groovy脚本执行权限
在上一篇文章中,提到了,如何在jenkins的pipeline中控制并行执行的job数。其中用到了groovy脚本。
在job的配置中,是不能勾选use groovy sandbox选项,否则执行会出错。
查看这个use groovy sandbox的作用:
if checked, run this groovy script in a sandbox with limited abilities. If unchecked, and you are not a Jenkins administrator, you will need to wait for an administrator to approve the script
简而言之,这个sandbox是groovy执行器的沙箱,用来限制groovy的执行权限。在这个沙箱中执行的groovy脚本,是有限制的,比如这段代码中的LinkedBlockingDeque,这个就不允许执行。
如果勾选这个use groovy sandbox,那么执行这个脚本就会失败。
提示报错信息:
Scripts not permitted to use new java.util.concurrent.LinkedBlockingDeque int. Administrators can decide whether to approve or reject this signature.
从报错信息,可以知道,执行权限受到限制。
那么如何取消这个限制了,有3个方法:
安装permissive script security插件,https://wiki.jenkins.io/display/JENKINS/Permissive+Script+Security+Plugin
取消勾选use groovy sandbox,但是在jenkinsfile中,是无法选择这个的
配置in-process script approval
以下说下,这第三个方法。
在jenkins > Manage jenkins > In-process Script Approval,可以配置脚本的执行权限。如下图:
如果有执行权限限制的操作,就会在提示在这个界面中,可以点击approve,来同意该操作。这样,将来执行就不会有权限执行的问题了。
当请求的操作,都运行执行之后,如下图所示,再执行这个job,就可以正常执行了。
招聘信息