Job DSL插件与管道插件

Mr.*_*ase 56 jenkins jenkins-plugins jenkins-job-dsl

Job DSL PluginPipeline Plugin之间的主要区别是什么?

  1. 两者都为程序化创造就业提供了方法
  2. 哪个是最好的,因为前进,为什么?
  3. 如果两者具有相似的功能,它们是否有不同的用例?
  4. 由于Jenkins 2.0专注于Pipelines作为代码,这是否意味着job-dsl没有未来或者Pipeline Plugin是Job DSL插件的下一步?

Nei*_*eil 64

我对两者都有丰富的经验.一个简明的回答是Job DSL存在的时间更长,是Netflix的"编码"Jenkins的开源解决方案.它允许您将逻辑和变量引入到Jenkins作业的脚本中,并且通常会使用这些作业为特定项目形成某种"管道".作为启用作业模板和脚本编写的常用方法,此插件获得了相当多的牵引力.

Jenkins Pipeline(2.0)是一个完全基于DSL的Jenkins工作的新版本,它试图消除将多个作业拼接在一起以填充单个管道的需要,这是迄今为止最常用的Job DSL.最初,由于Pipeline DSL没有提供Job DSL所做的许多功能,并且如上所述Job DSL允许您创建Pipeline作业,它们可以一起用于定义管道.

今天,IMO几乎没有理由使用Job DSL,因为Pipeline是Jenkins支持的Jenkins管道脚本编写机制,它已经达到或超过了Job DSL的大部分功能.正在为Pipeline本地开发新的插件,Jenkins开发人员鼓励那些没有插件与Pipeline集成.而Pipeline有几个优点:

  • 由于Pipeline 是作业本身,因此不需要使用Pipeline"种子"作业,就像使用Job DSL一样.使用Job DSL,它只是一个创建其他作业的脚本.
  • 使用Pipeline,您可以使用参数化手动输入步骤等功能,从而允许您在管道中指定逻辑中游
  • 可以包含在Job DSL中的逻辑仅限于创建作业本身; 而使用Pipeline,您可以直接在作业中包含逻辑.
  • 使用例如Build Pipeline Plugin创建基本传递管道时,作业DSL要困难得多; 使用Pipeline,您的文件将更小,语法更短.如果您使用Job DSL创建Pipeline作业,我还没有看到它的主要价值,因为Jenkins Pipeline提供了开箱即用的模板功能.

最后,Jenkins Pipeline是目前Jenkins最流行的功能.查看Jenkins World 2016议程,你会看到约.50%的会议涉及管道.没有Job DSL.

  • 如何从失败的阶段恢复或使用Pipeline开源版本重复部署阶段? (2认同)

Cod*_*dyK 22

我的感觉是理想的方法是同时使用两者.Pipeline是新的原生Jenkins功能,可以将作业作为代码.但是,如果从头开始构建Jenkins,那么仍然需要创建这些作业.这意味着Jenkins不能100%真正编写脚本并使用代码构建.

你可以做的是使用JOB DSL来构建所有作业的骨架结构,然后使用管道来实现作业.这将允许您100%编写Jenkins脚本,减去要创建的初始种子作业.

也许,最终我们将能够使用管道来完全控制Jenkins(安全性,配置甚至插件).但在那之前,我认为使用DSL和Pipeline是一种很好的方法.

  • 这一点非常重要.您*不能*仅使用Pipeline创建完全自动化的Jenkins设置.为了支持使用Pipeline进行全自动Jenkins设置,您(当前)需要同时使用Netflix DSL和Pipeline(或在groovy init脚本中创建管道作业).我不知道将来是否会改变,但现在你不能仅使用Pipeline完全自动化Jenkins (2认同)
  • 确切地。这就是我们现在正在做的事情。使用 DSL 和 Pipeline 的组合。 (2认同)
  • 我认为这是在处理:https://github.com/jenkinsci/jep/tree/master/jep/201 (2认同)