私は両方の経験が豊富です。簡潔な回答は、Job DSLはずっと長く存在しており、Jenkinsを「コーディング」するためのNetflixのオープンソースソリューションであったということです。 Jenkinsジョブのスクリプトにロジックと変数を導入でき、通常、これらのジョブを使用して特定のプロジェクトのある種の「パイプライン」を形成します。このプラグインは、ジョブのテンプレート化とスクリプト作成を可能にする一般的な方法として、かなりの注目を集めました。
Jenkins Pipeline(2.0)は、完全にDSLに基づくJenkinsジョブの新しい化身であり、Job DSLの最も一般的な使用である単一のパイプラインを満たすために複数のジョブをつなぎ合わせる必要性を排除しようとします。元々、Pipeline DSLはJob DSLが提供した機能の多くを提供していなかったため、前述のようにJob DSLを使用するとPipelineジョブを作成でき、それらを一緒に使用してパイプラインを定義できます。
今日、パイプラインはJenkinsパイプラインのスクリプトを作成するためのJenkinsがサポートするメカニズムであり、Job DSLの機能の多くを満たしているか、それを上回るため、IMOはJob DSLを使用する理由がほとんどありません。新しいプラグインはPipeline向けにネイティブに開発されており、Jenkins開発者によって推奨されていないプラグインはPipelineと統合するよう奨励されています。また、パイプラインにはいくつかの利点があります。
最後に、Jenkins Pipelineは、今のところJenkinsの最も一般的な機能です。 Jenkins World 2016のアジェンダ をご覧ください。セッションの50%はパイプラインに関係しています。 Job DSLの場合はありません。
私の感覚では、両方を使用することが理想的なアプローチです。パイプラインは、ジョブをコードとして持つための新しいネイティブJenkins機能です。ただし、Jenkinsをゼロから構築する場合、それらのジョブを作成する必要があります。これは、Jenkinsを100%真にスクリプト化し、コードから構築することはできないことを意味します。
できることは、JOB DSLを使用してすべてのジョブのスケルトン構造を構築し、パイプラインを使用してジョブを実装することです。これにより、作成される最初のシードジョブを差し引いたジェンキンスを100%スクリプト化できます。
たぶん、最終的にはパイプラインを使用してJenkins(セキュリティ、構成、プラグインさえ)を完全に制御できるようになるでしょう。しかし、それまでは、DSLとパイプラインを使用するのが良い方法だと思います。
ここで言及されていない重要な違いが1つあります。テストです。 job-dslには、SCMにコミットする前にDSLコードをテストする手段があります。 https://github.com/sheehan/job-dsl-gradle-example -これにより、ローカルテストスイートが可能Jenkinsと同様に、コードが実行される前にDSLコードで実行されます。私が知る限り、ネイティブのPipelineアプローチには同等のものはありません。
非常に限られた経験に基づく私の予備的な回答:
つまり、ジョブDSLのDSLはパイプラインを形成するジョブを作成するためのものであり、パイプラインプラグインのDSLはパイプライン自体を定義します。
そして、あなたの質問に答えるために:パイプラインは将来より広くサポートされるべきであり、私にとってはもっとわかりやすく(仕事はメタジョブではなく仕事です)、より多くの機能(ワークフローを含む)があるようです。前述のDoomの最高のバグを見つけて、修正/回避策を見つけられない限り、私はそれを使用します。