2017-04-19 26 views
18

Jenkinsに基づいた古いスタイルのプロジェクトベースワークフローをパイプラインに変換しようとしています。 docsに行く間に、scripteddeclarativeという2つの異なる構文があることがわかりました。最近、Jenkinsウェブのdeclarative構文リリース(2016年末)など。新しい構文がリリースされていますが、Jenkinsはスクリプト構文もサポートしています。Jenkinsスクリプトパイプラインまたは宣言パイプライン

ここで、これら2つのタイプのそれぞれがどの状況で最もよくマッチするかはわかりません。 scripted構文は間もなく廃止されますか?だからdeclarativeはジェンキンスのパイプラインの将来ですか?

これらの2つの構文タイプについて考えてみてください。

+0

私は、スクリプトが非推奨になることについて何も表示されません、それは宣言とスクリプトの間の機能のギャップを考慮すると驚くでしょう。 –

答えて

8

宣言は、より将来的な選択肢であり、人々が推奨するものです。これは、ビジュアルパイプラインエディタがサポートできる唯一のものです。検証をサポートします。ほとんどの文脈ではスクリプトに落ちる可能性があるので、スクリプトの力の大部分を持つことになります。時折、誰かが宣言的にやりたいことをやり遂げることができないユースケースが出てくることもありますが、これは一般的にスクリプトを使っていた人たちです。

もっとコンテキスト:https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/

3

ジェンキンスのドキュメントが適切に説明すると、両方のタイプを比較します。

引用符: "Scripted Pipelineは、Jenkinsユーザーにとって膨大な柔軟性と拡張性を提供します.Groovyの学習曲線は、通常、特定のチームのすべてのメンバーにとって望ましくないため、Declarative Pipelineは、 Jenkins Pipelineをオーサリングするための文法的な構文が含まれています。

2つは根本的に同じパイプラインサブシステムの下にあります。

はもっとここで読む:https://jenkins.io/doc/book/pipeline/syntax/#compareジェンキンスパイプラインが最初に作成された

7

は、Groovyのは、基盤として選ばれました。 Jenkinsは組み込みのGroovyエンジンを長期間出荷しており、管理者とユーザーの両方にとって高度なスクリプト機能を提供しています。さらに、Jenkins Pipelineの実装者は、Groovyが現在「Scripted Pipeline」DSLと呼ばれるものを構築するための強固な基盤であることを発見しました。

Scripted Pipelineは、完全な機能を備えたプログラミング環境であるため、Jenkinsユーザーにとって膨大な量の柔軟性と拡張性を提供します。 Groovyの学習曲線は、一般に、所属チームのすべてのメンバーにとって望ましいわけではありません。そのため、Declarative Pipelineは、Jenkins Pipelineを作成するための、よりシンプルで説得力のある構文を提供するために作成されました。

2つは根本的に同じパイプラインサブシステムの下にあります。それらは「コードとしてのパイプライン」の耐久性のある実装です。彼らはどちらもPipelineに組み込まれたステップを使用することも、プラグインによって提供することもできます。どちらも共用ライブラリを利用することができます

ただし、構文と柔軟性は異なります。宣言は、より厳密で事前定義された構造を持つユーザーが利用できるものを制限し、より単純な連続配信パイプラインの理想的な選択肢にします。スクリプティングは非常に限られたものであり、構造や構文の唯一の制限は、パイプライン固有のシステムではなく、Groovy自身が定義する傾向があり、パワーユーザーや複雑な要件を持つユーザーにとっては理想的な選択です。名前が示すように、Declarative Pipelineは宣言型プログラミングモデルを推奨しています。スクリプト化されたパイプラインは、より不可欠なプログラミングモデルに従っています。考慮すべきhttps://jenkins.io/doc/book/pipeline/syntax/

2

からコピー

もう一つは、宣言型のパイプラインは、スクリプト()のステップを持っています。 https://jenkins.io/doc/pipeline/steps/pipeline-model-definition/#code-script-code-run-arbitrary-pipeline-scriptこれは、スクリプト化されたパイプラインを実行できます。ですから、宣言的なパイプラインを使用し、必要に応じてスクリプト化されたパイプラインにscript()を使用することをお勧めします。したがって、あなたは両方の世界のベストを得ます。

関連する問題