GREEにおけるJenkins, その3

こんにちは、エンジニアの岡崎(@watermint)です。今回はGREEにおけるJenkins導入1年半のなかでの、反省点とこれから導入する方へのおすすめを紹介します。

GREEでのJenkins(当時はHudson)導入は、最初、岡崎の個人的な導入から始まりました。そこから徐々に利用してもらえるプロジェクトが増えて、いまや開発には欠かせないシステムに成長しました。今回は、この1年半でのJenkins導入の反省点と、これから導入される方へのTIPSをご紹介します。

ジョブの命名規則

Jenkinsに登録されているジョブも100を超えるようになってきた昨今、そろそろてこ入れをしたい問題です。

ジョブは1画面に収まる程度であれば、Jenkinsダッシュボード画面でも難なく目的のジョブを探し出したり、ジョブの状態を確認することが出来るのですが、さすがにジョブを探すためにスクロールをしなければならないほどになるとそうも行きません。

ダッシュボード

ジョブが例えば「(プロジェクト名)-(開発ブランチ名)-(タスク名) 」のようにすると決めてある場合は、ジョブをアルファベット順にソートすればおおむねプロジェクトごとにジョブがならび目的のプロジェクトをすぐに探すことが出来るようになります。

ジョブのフィルタ

Jenkinsダッシュボードにはビューと呼ばれるジョブのフィルタ機能があり、自分に関連のあるジョブのみを表示するなど、登録ジョブが増えすぎた場合へのソリューションがあります。

ジョブ名を正規表現でフィルタしたり、実行したユーザや、ジョブの状態(不安定、失敗、成功等)でフィルタすることによってビューをカスタマイズすることが出来ます。

ここで、ジョブはやはりしっかりと命名規則を守って作成されていた方が正規表現の作成もらくだし、何より利用する側にとって分かりやすい仕組みになります。

GREEでの導入の場合、おおまかですがgitレポジトリの名前などを基に命名規則を決めていたため、大きな混乱はありませんが、命名規則の強制までは実施していなかったため、細かなところでは命名規則にばらつきが出ています。

命名規則の強制

Jenkinsではジョブ名に対して一定の命名規則を強制する機能が利用できます。
命名規則

これを利用することによって、新規ジョブ作成時あるいは名称変更時にジョブ名を検証し強制することが出来ます。運用が始まってから適用するのはやや面倒なので、この手の制約はJenkins導入初期段階で適応しておきたいものです。

Slaveおよびラベルの命名規則

スレーブならびにスレーブのラベルについても同様の問題があります。一定の命名規則でSlaveが管理されているならば、ジョブを実行するスレーブ群を分かりやすく指定することが出来ますし、新規スレーブ導入の際にも迷わず名前を付けることが出来ます。

これも一度運用が始まってから新しいルールを強制するのは手間なので、なるべく運用開始直後にはそろえておくべきでしょう。

お知らせ

今週日曜日7月29日にいよいよJenkins ユーザ・カンファレンス 2012 東京が開催されます。すでに1,000名以上の方が参加登録されているという一大イベントです。S406-5 : 開発者とディレクターの視点を変えていく方法 (スポンサーセッション:GREE)というセッションにて登壇いたしますのでご期待ください。参加される方は当日お会いしましょう!

岡崎は懇親会にも参加しますので、直接聞いてみたいこと等ある方はぜひご参加ください。