JJB和Jenkins DSL插件 - 优缺点

4
我们使用JJB(Jenkins Job Builder)来生成我们的作业,但最近我决定尝试Jenkins DSL插件,因为根据我找到的信息,它与JJB相同或接近强大。尝试另一种技术的原因是我无法用JJB解决一个任务。这促使我深入了解DSL插件技术,尝试创建作业并以我们使用JJB的方式组织一切,以了解DSL插件是更好还是更差,我们应该使用它代替JJB还是作为补充。
互联网上关于这两个插件之间的优缺点并不多,所以我想请您帮助我理解:
- JJB和Jenkins DSL插件之间的优缺点是什么? - 哪些任务可以通过其中一个而不是另一个实现?
以下是我自己的看法: DSL插件的优点:
1. DSL插件允许我们使用编程语言(groovy)的强大功能,从而创建更有效的作业配置。 2. DSL插件不依赖于插件开发——如果添加了新参数和元素,则可以使用节点语法轻松添加它们。 3. 您可以使用类导入轻松获取其他DSL脚本中的变量,例如(这就是我决定尝试DSL插件的原因)。
DSL插件的缺点:
1. 使用DSL插件更难创建模板,您需要添加额外的代码才能使其工作。 "using()"命令不允许您传递变量。 2. 语法有点复杂。

你可以使用Groovy代码来创建DSL脚本的模板(或者构建器/工厂)。可以查看Job DSL Gradle example,特别是GradleCiJobBuilder.groovy。另一个优点是,你可以使用像Spock这样的标准Groovy测试框架,在提交任何更改之前测试你的配置。请参见https://github.com/sheehan/job-dsl-gradle-example/blob/master/src/test/groovy/com/dslexample。 - daspilker
谢谢,.text() 方法真的很有用,我将来会用它。我以为只能使用 with() 命令添加整个元素。测试框架也是一个好东西。 - Alexander
1个回答

5

我以前也是JJB的粉丝,但它存在一些问题使我无法使用。

当我注意到JobDSL(2014.6年?)时,它是这个任务的正确武器

一些问题:

  1. 对于复杂配置的支持较弱:它通过Jenkins REST API完成,很多东西无法通过外部REST API进行配置。 JobDSL基于Groovy,可用于从Jenkins实例获取内部数据。通过强大的configure block,如果普通DSL不起作用,它可以操作config.xml。

  2. 社区支持较弱:JobDSL由jenkins核心开发人员贡献,并迅速得到所有用户的支持。越来越多的插件直接通过配置支持。

  3. 执行模型:JJB在Jenkins API上运行,而jobDSL在jenkins jobs内部运行,易于控制。

因此,我建议使用JobDSL。

如果您的工作不太复杂,JJB已经支持,而且您是Python的粉丝,那么您肯定可以继续使用它。


1
如果您认为回答了您的问题,请接受它。保持开放以获得更好的回答。额外幻灯片http://www.slideshare.net/larrycai/learn-jobdsl-for-jenkins - Larry Cai
对我来说,JobDSL 只能在 Jenkins 内部运行是一种限制。因为在我的情况下,我只想通过命令行创建一个任务。要使用 JobDSL,我必须将 dsl 脚本提交到 git 存储库,然后触发种子任务来创建/更新该任务,我不知道是否有任何解决方法可以允许我从离线的 JobDSL 脚本中创建任务。 - link89

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接