org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:不允许脚本使用hudson.model.Item getName方法

时间:2018-10-08 04:42:53

标签: api exception jenkins groovy archive

我试图使用groovy脚本删除旧的构建历史记录,并且之前它运行良好,并且没有任何更改,现在我面临以下问题:

Map<String, String> newMap = Stream.of(utilMapString.split("\\,"))
            .collect(Collectors.toMap(t -> t.toString().split("=")[0], t -> t.toString().split("=")[1]));

在我的常规中,我使用的是API“ hudson.model.Hudson.instance.getItem(envVar.get(“ JOB_NAME”));“获得詹金斯的工作名称。由于它可以更早地工作,所以现在我面临着这个问题,并且不确定如何解决该问题。请提供输入。

1 个答案:

答案 0 :(得分:0)

您正在使用一种相当通用的方式来访问对象中的数据,这可能会以某种方式被利用,因此在Jenkins Groovy Sandbox中,该对象已被列入黑名单或未列入白名单。

您在这里有几种选择:

  1. 只需使用in-process script approval添加一个例外
  2. 使用不太通用的保存程序语法,例如env.JOB_NAME

在您的情况下,我肯定会选择第二种选择,因为它没有缺点,而且比您当前的代码更简单。

关于它为什么起作用的原因:三个可能是批准,以某种方式丢失了–一次发生在我身上–或者您使用的呼叫在安全性插件的更新中未列入白名单。