https://cloudbees.techmatrix.jp/blog/first-time-blue-ocean/
始めに
Jenkins 2.0からパイプラインが、そしてJenkins 2.7からはBlue Oceanプラグインが利用可能となりました。
パイプラインとは
従来Jenkinsはフリースタイルジョブでジョブを定義していました。ただフリースタイルジョブでは、例えば条件ロジックを組めなかったり、ジョブの途中で停止してしまった場合に最初から始めなければならなかったりと現実的にCI/CDを実現するには多くの制約がありました。
それらの問題を解消するために登場したのがパイプラインです。
パイプラインとは、Jenkins2.0から登場した公式のプラグインであり、CI/CDのフローをコードとして定義するためのツールです。なお、パイプラインにはスクリプトパイプラインと宣言型パイプラインの2種類がありますが、今回はBlue Oceanを利用するために宣言型パイプラインを用います。
どういったことができる?
パイプラインの特徴や、フリースタイルジョブと比べての利点について説明していきます。
まずパイプラインはJenkinsfileというApache GroovyをベースにしたDSLで記載されたスクリプトファイルです。 1つのスクリプトファイルでCI/CDのフローを記載することが可能です。
従来、複数のジョブをつなげていくにはビルド・トリガを用いて連結していく必要がありましたが、一目見るだけではどのようにジョブがつながっているのかがわかりませんでした。 タスクの名称をナンバリングするといった方法で運用回避されていたかと思います。 全体像がわかりづらく、業務引継ぎ等を考えると非常にネガティブな状況でした。
また、実行したいCI/CDのフローに比例してジョブの数も増えていき、管理にもコストがかかってしまいます。 比較してパイプラインは、CI/CDのフローの流れを1つのJenkinsfileで表現することが可能になります。
さらに、CI/CDのフローを表現できる幅も広がりました。 従来のビルド・トリガのような順次実行は当然として、並列実行や繰り返しの実行、条件に応じたスクリプトの実行といったことが可能になります。
例えば製品バージョン毎に異なるJDKのバージョン違い。従来であればJDK毎にフリースタイルジョブを作成する必要がありましたが、パイプラインでは条件に応じたスクリプトの実行が可能なので、コミットされたリポジトリに応じてJDKを分けるといった事ができます。
CI/CDフロー内の承認といったことについても、パイプライン上で可能です。 フローの一時点で停止し、承認や入力を待機して、入力内容に応じて後続フローの実行を切り替えることができます。
耐久性についてもパイプラインは秀でています。パイプラインの実行途中でJenkinsが再起動してフローが停止してしまった場合でも、実行途中から再開することが可能です。1回の実行が長時間なフローの場合に特に効果を発揮するでしょう。
保守性という点でも優れています。パイプラインを実現するのは1つのJenkinsfileというスクリプトファイルであり、SCMでの管理が可能です。フリースタイルジョブと比較して保守性は格段に高くなります。
当然AntやMaven、Gradleといったビルドツールや、メール通知、外部スクリプトファイルの呼び出しといった従来のフリースタイルジョブで実現できていたことはすべて実行が可能です。これからJenkinsの活用を始める方はもちろん、フリースタイルジョブで書かれたジョブもどこかのタイミングでパイプラインに乗せ換えることを推奨します。
ただこのようにメリットのあるパイプラインですが、いままでブラウザ上で操作していたクラシックジョブからいきなりApache Groovyをベースにしたスクリプトファイルというとハードルを感じる方もいると思います。
それをサポートするのが次に紹介するJenkinsの公式プラグインであるBlue Oceanです。
Blue Oceanの利用
Blue Oceanとは
Blue OceanとはJenkinsの公式プラグインです。
https://www.jenkins.io/projects/blueocean/
Blue Oceanを利用することで宣言型パイプラインをグラフィカルに作成できます。パイプラインの実行内容や実行結果も視覚的にわかりやすなり、従来のクラシカルなUIとは異なった新しい体験をすることが可能です。
パイプラインは前述のとおりJenkinsfileというスクリプトを記載していく必要がありますが、Blue Oceanを利用することでGUIでパイプラインを作成することが可能です。そのため、Apache Groovy形式での記載が慣れていない方でもJenkinsfileの作成が可能です。
Blue Ocean内でコードエディタの利用も可能です。複雑な内容のパイプラインを作成するにはJenkinsfileを編集していく必要も出てきますが、ある程度Blue Oceanでパイプラインの全体像を整え、細かい部分についてのみ修正するといった利用も可能です。
Blue Oceanは実行結果を可視化することにも優れています。当然Blue Oceanを用いない場合でもクラシカルなUIで実行結果の確認はできるのですが、より可視化した状態で結果の確認が可能になります。問題が発生した場合にどこでどのような問題が発生しているのかの判断を容易にし、生産性を向上させます。
Blue Oceanは「Bitbucket Cloud」「BitBucket Server」「GitHub」「GitHub Enterprise」「Git」をサポートしており、Blue Oceanで作成したJenkinsfileは上記SCMで管理することが可能です。共同編集やレビューで効果を発揮します。
こういったメリットのあるBlue Oceanを利用してみましょう。