如何从Jenkins插件中的管道步骤返回复杂对象?
我创建了一个插件,其中包含一个名为如何从Jenkins插件中的管道步骤返回复杂对象?,jenkins,jenkins-plugins,jenkins-groovy,Jenkins,Jenkins Plugins,Jenkins Groovy,我创建了一个插件,其中包含一个名为DeployFromCatalogStep的步骤。此步骤返回描述部署的记录。它当前作为部署类的对象返回。这纯粹是一个数据载体对象(getter和setter)。该步骤工作正常,但当我的管道尝试调用getter时,会出现脚本安全错误。下面是我正在运行的代码片段: def dep = vraDeployFromCatalog( catalogItemName: 'plain-ubuntu-18', count: 1,
DeployFromCatalogStep
的步骤。此步骤返回描述部署的记录。它当前作为部署
类的对象返回。这纯粹是一个数据载体对象(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)
当我试图提取代码段最后一行上的ID时,最后一行失败:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method net.virtualviking.vra.jenkinsplugin.model.catalog.Deployment getId
我明白为什么我会犯这样的错误。我没有明确允许访问该方法
我的问题是:在这种情况下,最佳做法是什么?我可以想出几个选择:
Map
或其他“无害”数据类型有什么想法吗?由于方法的返回类型,这里出现的脚本批准不会出现。即使使用字符串等类型作为返回值,也会出现错误消息
无论在方法中使用哪种数据类型,插件类都被认为是不安全的。您可以像前面提到的那样自动预填充脚本安全签名的白名单。这不会解决问题,但会是一个有效的解决方法。由于方法的返回类型,此处出现的脚本批准不会出现。即使使用字符串等类型作为返回值,也会出现错误消息
无论在方法中使用哪种数据类型,插件类都被认为是不安全的。您可以像前面提到的那样自动预填充脚本安全签名的白名单。这不会解决问题,但会是一个有效的解决方法。谢谢!最后我把所有的东西都转换成了简单的地图和数组,效果非常好。因此,我没有返回
部署
而是返回一个包含其成员的地图。谢谢!最后我把所有的东西都转换成了简单的地图和数组,效果非常好。因此,我没有返回部署
而是返回一个包含其成员的映射。