问题描述
我创建了一个名为DeployFromCatalogStep
的插件。此步骤返回描述部署的记录。当前作为Deployment
类的对象返回。这纯粹是一个数据载体对象(getter和setter)。该步骤工作正常,但是当我的管道尝试调用getter时,我收到了脚本安全性错误。这是我正在运行的代码段:
def dep = vraDeployFromCatalog(
catalogItemName: 'plain-ubuntu-18',count: 1,deploymentName: 'Jenkins-#',projectName: 'Pontus Project',reason: 'Test',timeout: 300,version: '6',inputs: '{ username: \'testuser\' }')
assert dep != null
def addr = vraWaitForAddress(dep[0].id)
@H_404_6@org.jenkinsci.plugins.scriptsecurity.sandBox.RejectedAccessException: Scripts not permitted to use method net.virtualviking.vra.jenkinsplugin.model.catalog.Deployment getId
这是我的问题:在这种情况下,最佳做法是什么?我可以想到一些选择:
有什么想法吗?
解决方法
由于您的方法的返回类型,这里没有得到脚本批准。即使您将字符串等类型用作返回值,也会出现错误消息。
无论您的方法中使用哪种数据类型,您的插件类都被认为是不安全的。您可以自动为脚本安全签名预先填充白名单,例如上述here。这不能解决问题,但是是有效的解决方法。