【Jenkins】 Pipelineを学ぶ前に知っておいて欲しいこと

CI/CD
JuraHeepによるPixabayからの画像

はじめに

こんにちはSREエンジニアのMakiです。
この記事ではJenkinsのパイプラインとは何かについて紹介します。
初めてJenkinsのパイプラインを使う人の理解に役立つのではないかと思います。

Jenkins Pipelineとは

Pipelineは様々な処理をワークフローとして定義し、一連の流れをわかりやすくすることができるJenkinsのJobです。もともとはプラグイン (workflow-aggregator) として開発されていたものですが、Jenkins 2.0から標準サポートされるようになりました。

Jenkins Pipelineは実は2種類の書き方が存在しています。

  1. Scripted Pipeline
  2. 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でできることの幅が広がる。

関連ページ

おすすめ書籍


[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

初めてJenkinsを学ぶ方におすすめです。


Jenkins

Jenkinsでできることについてもう少し詳しく学びたい方におすすめです。


サーバ/インフラエンジニアの基本がこれ1冊でしっかり身につく本

コメント

タイトルとURLをコピーしました