Jenkins DSL ClassNotFoundException

时间:2017-12-18 19:54:04

标签: jenkins groovy dsl grape

考虑下面的片段,其中包含了snakeyaml,然后只围绕一些基本的yaml循环。

@Grab('org.yaml:snakeyaml:1.17')
import org.yaml.snakeyaml.Yaml

List example = new Yaml().load("- \"wibble\"\n- \"wobble\"")
example.each{ println it }

在基本构建步骤" groovy@2.0"这可以按预期工作。

wibble
wobble

在基本构建步骤" job-dsl@1.63"这死了......

Processing provided DSL script
FATAL: org/apache/ivy/core/settings/IvySettings
java.lang.ClassNotFoundException: org.apache.ivy.core.settings.IvySettings
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:560)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Caused: java.lang.NoClassDefFoundError: org/apache/ivy/core/settings/IvySettings

我知道可以使用groovy,但我认为我的jenkins服务器配置不正确,并且不确定如何调试问题。

有人可以建议一些解决方案吗?

1 个答案:

答案 0 :(得分:0)

这似乎是一个已知的开放问题,如here所述。我得到了同样的例外,在Docker容器中运行一个准系统Jenkins实例。对我有用的解决方案看起来更像是一个黑客攻击,但似乎工作做得很好。只需安装Pipeline Shared Groovy Libraries Plugin,它就可以在整个Jenkins实例中支持Grape。

如果有帮助,请告诉我。