はじめに

こんにちは株式会社TIELECのタカシユウトです。 この記事ではJenkinsでできることについて紹介します。 これからJenkinsを使おうと考えているかた、Jenkinsを使っているけれど体系的に理解したいという方におすすめの内容となっています。

Jenkinsって何ができるの?

「何ができるの?」

の前にまずJenkinsとは何なのかについて説明いたします。

Jenkins とは川口耕介さんが開発したCI/CD の老舗ツールです。

川口耕介氏

(日経 xTECH より)

昨今では CircleCITravis CI といったクラウドベースのCI/CDツールも登場していますが、JenkinsはCI/CDの老舗といえるだけあって多くの機能が搭載されており、様々なオペレーションに対応することができます。

例えばバッチ処理を定期実行したり、実行した結果を保存し関係者に通知したりといったことができますが、具体的な特徴を挙げるとしたら以下の3点に集約されると思います。

  1. プログラム実行
  2. 通知
  3. ワークフロー定義

では上記について詳しく説明していきます。


1. プログラム実行

Jenkins のメイン機能はプログラム実行です。

ソースコードのコンパイルや、出荷物のまとめ、アプリケーションのデプロイといったことを継続的に何回も行うことを目的として作られているので、CI/CD ツールという位置づけですがプログラム実行は全般的に何でもできます。

例えばJavaやPythonで書かれたプログラムを実行して何らかのデータを集計してExcel に出力するといった使い方もできます。

その中でもJenkinsのプログラム実行には以下のような特徴があります。

プログラム実行における特徴


2. 通知

二つ目の特徴は通知です。 Jenkinsのジョブは一度実行されたら基本的には処理が終わるまでほったらかしです。 そうなるときになるのはジョブの実行結果ですよね。 また、定期実行やスケジュール実行を設定している場合は予定通りにジョブが実行されたのかどうかが気になってくると思います。

それを補う機能として様々な通知機能が使えるようになっています。

通知機能の代表例

mailやslackに通知するというやり方が代表的ですがSkypeや、Googleハングアウト、Lineなどに通知するといったことも実現可能です。


3. ワークフロー定義

3つ目の特徴はワークフロー定義です。

以前のJenkinsはこのワークフローの定義に関してはあまり強くはありませんでした。

しかしJenkins2.0から Pipelineブルーオーシャン という機能が追加されたことにより格段にワークフローの定義および可視化といったことがやりやすくなりました。 こりにより、ソースコードのコンパイル、Unitテスト、リリース、デプロイとった一連の流れをワークフローとして定義できるようになりCIの領域からCDの領域へと進化を遂げています。

: Blue Ocean(ブルーオーシャン)は2024年3月に非推奨となり、現在はメンテナンスモードに入っています。新規プロジェクトでは従来のClassic UIの使用が推奨されています。Pipeline機能自体は引き続き利用可能で、Jenkinsfileを使ったワークフロー定義は現在も主流の手法となっています。

今ではこのワークフロー定義はJenkinsの中でもキラーコンテンツであり、これをなくしてJenkinsを語ることはできません。

まとめ

以上です。いかがでしたでしょうか。

ではまとめです。 Jenkinsでできることは大きく分類すると以下の3点です。

  1. プログラム実行
  2. 通知
  3. ワークフロー定義

これらを使いこなしていくことが Jenkins マスターへの道のりです。

関連ページ

おすすめ書籍

[📦 商品リンク: moshimo-book-jenkins-jissen]

[📦 商品リンク: moshimo-book-jenkins-blue]

[📦 商品リンク: moshimo-book-server-infra]

もっと深く学びたい方へ

この記事で、Jenkinsの機能は理解できたと思います。

でも、「なぜCI/CDが必要なのか」「どういうプロジェクトでJenkinsを使うべきか」という判断には、SREやインフラの考え方が必要です。

より深い理解のために、こちらの記事もおすすめです:

/ja/tech/sre/hello-sre/

/ja/tech/sre/why-sre-investment-undervalued/