詹金斯·弗。2.89.4
workflow-cps ver 2.42
当我尝试运行一个加载库的管道时,我得到以下异常:
Unsupported expression for CPS transformation @ line -1, column -1
链接所引用的Groovy类:
final class Bindings implements Serializable{
@Delegate
private final Map map
Bindings(Map map) {
this.map = map
}
@Override
boolean containsKey(Object key) {
return true
}
@Override
Object get(Object key) {
return map.getOrDefault(key, null)
}
}
您可以在管道或库中复制异常,如下所示:
def map = ["key":"value"]
Bindings bindings = new Bindings (map)
不确定这里的问题是什么(其他注释确实有效)。可能只适用于源代码生成注释。无论如何,对于任何非平凡的库来说,它都很可能使用Groovy语言的特性。抱歉,在管道脚本中通常不提供外来特性。在这个插件或工作流cps插件中都没有明确记录对Groovy类注释的支持不足(据我所见)https://github.com/jenkinsci/workflow-cps-plugin.
这是一个已知的詹金斯问题:詹金斯-45901
自2017年8月开始开放。看起来它不会很快被修复:
不确定是否有任何特定的地方Groovy语言支持(或缺乏)被详尽地记录下来,但无论如何,我不希望这个问题或类似的事情得到解决。未来的重点是允许外部流程执行,而不是在CPS引擎上浪费更多的时间,除非出现安全漏洞或严重倒退。
我尝试了@委托
和@NonCPS
的组合,但后者似乎对字段没有任何影响。
您必须自己实现委托方法,或者尝试其他解决方案。
问题内容: 詹金斯版 2.89.4workflow -cps ver 2.42 当我尝试运行加载库的管道时,出现以下异常: 引用链接的Groovy类: 您可以像这样在管道或库中重现异常: 问题答案: 这是一个已知的詹金斯问题:JENKINS-45901 自2017年8月以来已开放。看起来很快不会修复: 不知道是否有详尽的文档记录了Groovy语言支持(或缺乏它),但是无论如何我都不会期望这个问题或
我有一个Groovy库作为全局共享库提供: 以及使用此库的Jenkins脚本化管道作业: 当作业运行时,我从获得以下输出,然后是的错误: 我很清楚,一些Jenkins插件已经依赖于httpcomponents,以下情况似乎是正确的: 我的注释导致所请求的http客户端版本被下载(如中观察到的)。 但是,Groovy库没有加载或使用该版本,而是依赖于Jenkins插件的其他版本。 而且,更恼人的是,
我们试图切换到jenkins管道,但我在groovy/java的低水平阻止了我们建立一个共享库。 这里是我的共享库(位于bitbucket中git repo的{root}/src/com/pipeline.groovy中)我必须承认,我在这里做什么都不知道,因为我不知道包裹的定义 Jenkins的管道看起来 通过所有这些设置,我最终得到了错误: 我怀疑我的漂亮包裹的定义,但我坚持这样做。 非常欢迎
我将我的Jenkins Pipeline存储为Jenkins共享库中的Groovy脚本。我想为不同的工作使用不同的版本。我的共享库脚本称为如下: 我已将sharedLib repo中的不同版本标记为。万一我想用v1。0,我用注释引用了它,如下所示。 在我的工作中,我通过调用groovy脚本访问了共享库,并使用了上面的注释,如图所示: 我运行这项工作时出错了。以下是我看到的错误。 当我使用。我哪里出
我目前正在尝试从jenkins管道中的文件加载一个自定义groovy类。我尝试了这里提出的解决方案: 如何在Jenkins管道中导入类文件? 作为... JenkinsPipelineUtilityClass.groovy 詹金斯档案 并尝试同样使用GroovyClassLoader(再次使用上述类) 詹金斯档案 我在这两方面都遇到了同样的错误: 我已经检查了正在进行的脚本批准,里面什么都没有,我
由于我无法访问组织中的“管理Jenkins”菜单,我无法在“管理Jenkins”中的“全局管道库”中配置共享库。 没有在Manage Jenkins中进行配置,是否有其他方法实现此功能? (或) 是否可以通过管道脚本配置“全球管道库”部分,而不管访问权限如何? 如果可能,请您在答案中共享一些代码片段。