J'ai une vaste expérience avec les deux. Une réponse concise est que Job DSL existe depuis beaucoup plus longtemps et constituait la solution open source de Netflix pour le "codage" Jenkins. Cela vous permettait d'introduire de la logique et des variables dans la création de scripts pour vos tâches Jenkins. Généralement, ces tâches étaient utilisées pour créer une sorte de "pipeline" pour un projet particulier. Ce plugin a reçu pas mal de traction en tant que moyen courant d'activer la création de modèles de tâches et la création de scripts.
Jenkins Pipeline (2.0) est une nouvelle incarnation d'un travail Jenkins entièrement basé sur un DSL et tente d'éliminer le besoin d'assembler plusieurs travaux pour remplir un seul pipeline, qui était de loin l'utilisation la plus courante de Job DSL. À l'origine, Pipeline DSL n'offrait pas beaucoup des fonctionnalités proposées par Job DSL et, comme indiqué ci-dessus, Job DSL vous permettait de créer des travaux de pipeline. Ils pourraient être utilisés ensemble pour définir un pipeline.
Aujourd'hui, IMO a peu de raisons d'utiliser Job DSL car Pipeline est le mécanisme pris en charge par Jenkins pour la création de scripts de pipelines Jenkins et il a atteint ou même surpassé une grande partie des fonctionnalités de Job DSL. De nouveaux plugins sont développés en mode natif pour Pipeline et ceux qui ne le sont pas sont encouragés par les développeurs Jenkins à s'intégrer à Pipeline. Et Pipeline présente plusieurs avantages:
Enfin, Jenkins Pipeline est de loin la fonctionnalité la plus répandue de Jenkins à l’heure actuelle. Consultez le agenda Jenkins World 2016 et vous verrez env. 50% des sessions impliquent un pipeline. Aucune pour Job DSL.
Mon sentiment est que l'approche idéale consiste à utiliser les deux. Pipeline est la nouvelle fonctionnalité native de Jenkins permettant d’avoir des travaux en tant que code. Cependant, si vous construisez Jenkins à partir de zéro, ces emplois doivent encore être créés. Cela signifie que Jenkins ne peut pas être 100% véritablement scripté et construit à partir de code.
Vous pouvez utiliser JOB DSL pour créer la structure squelette de tous les travaux, puis utiliser un pipeline pour la mise en œuvre des travaux. Cela vous permettra d'utiliser le script Jenkins à 100%, moins le travail de départ initial à créer.
Peut-être que nous pourrons éventuellement utiliser pipeline pour contrôler totalement Jenkins (sécurité, configuration et même plugins). Mais jusque-là, je pense que l’utilisation de DSL et Pipeline est une bonne approche.
Il y a une distinction importante qui n'a pas été mentionnée jusqu'ici: les tests. Avec le job-dsl, il est possible de tester le code DSL avant de le valider auprès de SCM: https://github.com/sheehan/job-dsl-gradle-example - permet une suite de tests locale à exécuter sur le code DSL, ainsi que dans Jenkins, avant que le code ne soit exécuté. Autant que je sache, il n'y a pas d'équivalent dans l'approche par pipeline.
Ma réponse préliminaire basée sur une expérience très limitée:
Donc, pour récapituler: le DSL de Job DSL sert à créer des travaux formant un pipeline, le DSL de Pipeline Plugin définit le pipeline lui-même.
Et pour répondre à votre (vos) question (s): Pipeline devrait être plus largement pris en charge à l’avenir, me semble plus simple (le travail est un travail, pas une méta -obob) et semble avoir plus de fonctionnalités (y compris le flux de travail). Je l’utiliserais à moins que vous ne rencontriez le bogue Showstopper susmentionné de Doom et ne trouviez pas de solution/solution de contournement.