Jenkinsって何ができるの?3ポイントを理解してJenkinsマスターへ

CI/CD

はじめに

こんにちはSREエンジニアのMakiです。
この記事では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のプログラム実行には以下のような特徴があります。

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

  • 定期実行
    一週間に一度や、毎朝4時に実行するなどのような設定を組むことができます。
  • スケジュール実行
    今日の22時から実行を開始するなど、ジョブの実行予約をすることができます。
    Schedule Build Pluginを入れると使えるようになります。
  • 実行結果の保存
    プログラム実行時に吐かれる標準出力を保存したり、プログラムを実行した結果で生成されたファイルを保存することができます。
  • 実行履歴の管理
    プログラムを過去に何回実行して、どのくらい成功しているかといった情報を管理することができます。

2. 通知

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

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

通知機能の代表例

  • mail
  • slack

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


3. ワークフロー定義

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

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

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

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

まとめ

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

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

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

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

関連ページ

おすすめ書籍


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

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


Jenkins

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


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

コメント

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