weiqi7777

jenkins pipeline取消groovy脚本执行权限

0
阅读(134) 评论(0)

在上一篇文章中(http://www.lujun.org.cn/?p=4025),提到了,如何在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个方法:

以下说下,这第三个方法。

在jenkins > Manage jenkins > In-process Script Approval,可以配置脚本的执行权限。如下图:

如果有执行权限限制的操作,就会在提示在这个界面中,可以点击approve,来同意该操作。这样,将来执行就不会有权限执行的问题了。

当请求的操作,都运行执行之后,如下图所示,再执行这个job,就可以正常执行了。