Jenkinsでプロジェクトの状況をウォッチする

Jenkinsでプロジェクトの状況をウォッチするために、RedmineMetricsPluginと言うものを作りました。
(twitter上では自分自身RedmineTicketMetricsPluginと読んでいたり、ちょっと名前が揺れてます)

背景

システムの開発現場では「プロジェクトのタスクがどのように推移していて、どのようなフローで消化される傾向にあるか。今どれぐらいのタスクが残っているのか、それらのチケットのステータスはどうなっているか」が知りたい場面が多いです。
特にリリース直前のリリース判定会などでは「今、残不具合はN件でM日で修正できる予定です」という報告をもらっても「M日で修正できるならリリースに間に合う」という判断を行うには材料が足りません。
「不具合は今日までにどのような勢いで発生しているのか、日々不具合が報告されているのか、既に報告される数は落ち着いているのか」が分からないと、現在のチケット数だけでは正しい判断ができないのです。(それが分かったから正しい判断ができるかというとそういう訳でもないのですが。)

で、なぜJenkinsのプラグインになったかというとアイデア元は「Jenkinsをメトリクス収集ツールとして使うアイデア」です。
http://forza.cocolog-nifty.com/blog/2012/04/jenkins-d895.html

JenkinsはSVNMercurial・GitのようなSCMリポジトリをインプットにするが、RedmineTracのようなITSのDBもインプットに入れれば、ITSのDBからデータをロードしてバッチ処理を行うことも可能のはずだ。
ITSのチケット集計機能はリアルタイムな集計しかできないけれども、そのようなアイデアを実現出来れば、バッチ処理を行う集計結果も可能になる。

ITSの機能でチケット数の推移やそのOpen/Closeの割合まではグラフ化することができるものもありますが、チケットのステータスの推移を見るにはバッチ的に集計する必要があるので、高機能なCronであるJenkinsの方がいいということです。

使い方

まだ本プラグインはJenkinsの公式プラグインとして申請していないので http://tombo.in/jenkins/redmine-metrics-plugin.hpi からプラグインをダウンロードします。

Jenkinsのメニューから Jenkinsの管理 > プラグインの管理 > 高度な設定 > プラグインのアップロード からダウンロードしたプラグインをアップロードし、Jenkinsを再起動します。再起動後、Jobの設定画面を見るとビルド後の処理の追加に「Redmineのメトリクスを集計する」という項目が追加されます。

ここで「Redmineのメトリクスを集計する」という項目を追加するとRedmineのURL、APIキー、プロジェクト名、バージョン名が聞かれるので、それぞれ入力します。

複数のバージョンのメトリクスを合わせて修正したい場合はカンマ区切りで入力します。「8月リリース新規機能,8月リリース不具合修正」などのように機能追加と不具合修正を別バージョンで管理している場合などに使うと便利でしょう。

設定が完了しビルドを実行すると、プロジェクトのページに以下のようにチケットのステータスの推移が分かるグラフが表示されるようになります。

実際にこのグラフがプロジェクトの助けになるのかどうかはまだ分からないですが、これからしばらく運用して有用性を確認しようと思います。

今後の展望

  • できればJenkinsの公式に入れてもらいたいと思うのですが、フローがよく分からないのでしばらくはここで野良プラグインとして提供します。
  • Redmine に特化する必要もないので Trac, Github, bitbucket などに対応して TicketMetricsPlugin として衣替えするのもおもしろいかなと考えています。

リポジトリ

https://github.com/mitoma/redmine-metrics-plugin

不具合情報
Ubuntuなど特定のLinux環境ではグラフの文字が□□□などとなってしまう(豆腐化してしまう)場合があります。
フォントが無いのが原因のようなので、以下のように追加してJenkinsを再起動すれば改善すると思います。

sudo apt-get install ttf-vlgothic