はじめに
こんにちはSREエンジニアのMakiです。
この記事ではJenkinsのパイプラインとは何かについて紹介します。
初めてJenkinsのパイプラインを使う人の理解に役立つのではないかと思います。
Jenkins Pipelineとは
Pipelineは様々な処理をワークフローとして定義し、一連の流れをわかりやすくすることができるJenkinsのJobです。もともとはプラグイン (workflow-aggregator
) として開発されていたものですが、Jenkins 2.0から標準サポートされるようになりました。
Jenkins Pipelineは実は2種類の書き方が存在しています。
- Scripted Pipeline
- Declarative Pipeline
この2つの違いについての説明をいたします。
Scripted Pipeline
Scripted Pipeline はGroovyの文法を利用して作成するパイプラインです。
変数や関数の定義などが自由に行えるため、柔軟な表現ができます。
しかし、Groovyの知識を必要とするためやや複雑でした。
Declarative Pipeline
Declarative PipelineではScripted PipelineほどGroovyの知識を必要とせずシンプルに、より分かりやすくワークフローを定義することが可能です。また、必要に応じてScripted Pipelineの柔軟な表現も行えるため、両者のメリットを共に享受することができる構文となっています。
現在ではDeclarative Pipeline
が推奨
の記法になっています。
Jenkins Pipelineに関する情報を探す際に、昔に書かれたものはScripted Pipeline
での記法で書かれている場合があるので注意してください。
簡単な見分け方
見分け方は簡単です。
node
のブロックから始まるものはScripted Pipeline
pipeline
のブロックから始まるものはDeclarative Pipeline
これだけです。
-
Scripted Pipeline
node { //★ "node"から始まるものはScripted Pipeline stage('Build') { // } stage('Test') { // } stage('Deploy') { // } }
-
Declarative Pipeline
pipeline { //★ "pipeline"から始まるものはDeclarative Pipeline agent any stages { stage('Build') { steps { // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } } }
Declarative Pipeline を書くときってGroovyの知識はなくてもいいの?
Groovyの知識がなくてもある程度Pipelineを書くことはできます。
しかし、Pipelineに慣れていってより高度な設計をしたいと思ったときには、Groovyの知識があるとやれることの幅が格段に広がります。
例)
- 変数の中身を動的に書き換えたい。
- オリジナルの関数を定義して呼び出したい。
- 特定の処理をループさせたい。
- 長い処理をオリジナルのステップとしてまとめたい。
など。こういったことをやりたいと思ったときにはやはりGroovyの知識があるとやりやすいです。
※ Groovyのリファレンスはこちらをご覧ください。
まとめ
- Pipelineは様々な処理をワークフローとして定義しすることができるJenkinsのJob。
- 書き方は
Scripted Pipeline
Declarative Pipeline
の2種類があり、推奨はDeclarative Pipeline
の方。 - Groovyの知識は必ずしも必要ではないが理解しているとPipelineでできることの幅が広がる。
関連ページ
- Groovyのリファレンス
Groovy Language Documentation
おすすめ書籍
[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
初めてJenkinsを学ぶ方におすすめです。
Jenkins
Jenkinsでできることについてもう少し詳しく学びたい方におすすめです。
コメント