Posted at

Jenkins活用方法

More than 3 years have passed since last update.


0.はじめに

HudsonでCIをはじめて、Jenkinsに切り替えてかれこれ6~7年。

CI導入初期は、Jenkinsマスタ環境1台でビルド・デプロイ・テストを行う小規模な環境でしたが、今ではスレーブ環境を20台近く従えるやり手の執事に出世しています。

開発現場によってJenkinsの使い方はいろいろだと思いますが、うち(企業向けWebサービス開発)ではこんなプラグイン使ってます、ということを中心に紹介していきます。


1.Categorized Jobs View

Categorized Jobs View

小規模でJenkinsを使っていたときにはこのプラグインを導入していなかったのですが、ビルドするアプリケーションの種類が増えたり、デプロイやテストの数が増えてくると、タブメニュー化するだけではジョブの実行状況把握が厳しくなってきたのでCategorized Jobs Viewの導入を決めました。

正規表現でジョブのグルーピングができるので、テストの種別(パフォーマンステスト、旧バージョンテスト、スローテストなど)やビルドするアプリケーションの種別(サーバ、クライアント、運用バッチなど)でグルーピングしてます。


2.Timestamper

Timestamper

Jenkinsコンソールにタイムスタンプを出力してくれるプラグインです。

地味に活躍してくれてます。

特にテストジョブが失敗したときに、テスト対象のサーバログとJenkinsコンソールを突き合わせて確認するときに便利さを感じています。


3.Configuration Slicing Plugin

Configuration Slicing Plugin

複数のJenkinsジョブの設定を1画面で一括編集できる優れもののプラグインです。

これも、小規模でJenkinsを使っていたときには必要なかったものです。

デプロイジョブやテストジョブでほとんど同じ設定なのに、実行する環境だけが違うジョブが増えてきたときに試しに導入してみました。

結果、ジョブ実行のスケジュール設定変更やジョブの中で使うシェルスクリプトの追加・修正など、いちいち各ジョブの設定画面を開いて編集していた作業が1つの画面でできるようになって、作業の効率化だけでなく、設定ミスも少なくなりました。

利用頻度は少ないプラグインですが、おススメです。


4.Build Trigger Badge Plugin

Build Trigger Badge Plugin

Jenkinsジョブのトリガーを識別してアイコン表示してくれるプラグインです。

ジョブが失敗したときに、直前のコミットをポーリングして実行されたジョブなのか、誰かが手動で実行したのか、それとも定期実行だったのか、が一目でわかります。


5.Clone Workspace SCM Plugin

Clone Workspace SCM Plugin

他のJenkinsジョブのワークスペースをコピーするプラグインです。

デプロイジョブで大活躍しています。


6.Checkstyle Plugin, FindBugs Plugin

Checkstyle Plugin

FindBugs Plugin

言わずと知れたCheckstyleとFindBugsのプラグイン。

開発メンバのローカル環境だけでなく、Jenkinsでも実行してコードの健康状態をチームで共有しましょう、ということで導入しました。

実行結果の推移がグラフ化されるので、指摘が減っているのをふりかえりで確認できたときには、チームのテンションがほんのりUPします。


7.Emotional Jenkins Plugin

Emotional Jenkins Plugin

ジョブが失敗するとJenkinsさんが般若化します。

導入したての頃はインパクトがありましたが、慣れてしまうと・・・どうでしょう?

直接の役には立ってないですが、仕事の余白を愉しむために継続利用しています。


8.Groovy plugin

Groovy plugin

JenkinsでGroovyを実行するためのプラグインです。

最近、Javaで書くと冗長になりやすいテストをGroovyでやってみよう、ということにチームでTryしてるのでお試し導入中です。

※世間でどうかはわからないですが、うちの開発チームでは第二次Groovyブーム到来中です。


9.困っていること

何かと便利なJenkinsですが、困っていることもいくつかあります。

Jenkinsの問題というよりも、テストの作り方や環境の問題が大半ですが。。

・10分ビルドを達成できていない(特にテストに時間がかかる)

・スレーブが増えてきてスレーブ管理が大変に

・Jenkinsの重要性が高まれば高まるほどJenkinsをアップデートするのがコワい


10.まとめ

こうして書いてみると、便利だと思って使ってるJenkinsのプラグインは地味ですね。。

ただ、なくなってしまうと困るものなので、Jenkinsは縁の下で開発を支えてくれる超抜優秀な執事になってくれています。

使っているプラグインをすべては紹介しきれてないですが、この中にもしも使っていないプラグインがあればお試しで導入を検討してみてください。


おまけ

いつだったかチームメンバがJenkinsのユーザ会(?)でもらってきたJenkins人形を朝会のトークンとして活用しています。

朝一でのJenkinsの確認漏れ防止にもなるので大活躍してます。