こちらはJenkins Advent Calendar 1日目の記事になります。
JenkinsのDeclarative PipelineとScripted Pipelineについて説明します。
JenkinsはJobをシェルスクリプトやGroovyで定義します。
JenkinsのPipelineはGit等のバージョン管理でJobを定義したスクリプトファイルを管理し、必要に応じてそのファイルを呼び出し実行することが出来るJenkins 2から導入された機能です。
Scripted Pipeline
パイプラインを命令型プログラミング(手続き型プログラミング)で記述されます。Groovyでのプログラミングに依存しエラーのチェックや例外処理等もGroovyで実装されます。
利点
- コードの記述量が少なく済み構造を決めなくても良い
- 手続き型プログラミングでコードが書ける
- Jenkins本来のPipelineの書き方に近い
- 柔軟性があり複雑な処理を書きやすい
注意点
- プログラミングスキルが要求される
- シンタックスチェックがプログラムに依存しユーザー側で実装する必要がある
- 処理によってはDeclarative Pipelineで記述するより複雑になる場合がある
Declarative Pipeline
宣言型プログラミングで記述されます。Pipelineを構成するそれぞれのセクションが構造的に明確に分離された記述になります。
利点
- 構造的でプログラムが書きやすい
- Pipelineのコードを読んだ時に(一般的にはScripted Pipelineより)読みやすい
- Pipelineの中に通知、Post処理等の機能が組み込まれているため自分で実装しなくても良い
- シンタックスチェックがありエラー出力が読みやすい
- 順次処理が書きやすいためPipelineに一貫性を持たせることが出来る
注意点
- プログラムの書き方が制限させる
- 比較的新しい技術のため未対応のJenkinsの機能やプラグインがまだまだある
- 複雑な処理は書きにくい
どちらのスタイルを採用するか
1つの指針としてはDeclarative PipelineはJenkins Pipeline初心者には理解しやすく学習コストも低い傾向にあります。初心者はDeclarative Pipelineから採用すると良いかと思われます。
ただDeclarative Pipelineは制限も多いためDeclarative Pipelineでは処理を実装しにくい場合はScripted Pipelineを採用すると良いでしょう。