2013年5月28日火曜日

Jenkins Sounds Plugin を仕込んでみた

そこそこの人数でプロジェクトを回す際に、必要となってくるのがソースのバージョン管理と状態管理。

ということで、一年ほど前から継続的インテグレーションを実現させるために、Jenkinsを使用しています。

少人数(1〜3人くらい)で回している間は、なんかあったら『Jenkinsの結果見やがれ』で済んだんですが、今回人数がそこそこ入るプロジェクトにアサインされることになり、少々工夫をする必要が出てしまいました。

具体的には

  • コミットタイミングが開発者によってまちまちなため、ジョブのタイミングがわからない
  • ジョブの結果(success / fail / abort) が、瞬時にわからない

の二点です。

 

結果的に、

  1. 定期的にJenkinsの管理画面を確認し
  2. どのコミットでエラーが発生したかを確認し
  3. コミットの担当者を突き止め
  4. 修正させる

という、至極面倒くさいフローをたどることになります。

Redmineも併用しているため、Jenkinsからチケットを投げて、チケット管理させるという方法も考えたのですが、やはり能動的な通知が必要なのでは?と思い始めました。

 

前置きが長くなりましたが、ということで今回採用したのが、『Jenkins Sounds Plugin』です。

 

なにそれ?

Jenkinsのアクションごとに、指定の音声ファイルを再生するだけのプラグインです。

ジョブの結果ごとに、再生する効果音を指定出来ます。

 

インストールする

Jenkinsはすでにインストール済みである前提で進めます。

まずはJenkinsのダッシュボードから『Jenkinsの管理』をクリックし、『プラグインの管理』をクリックします。

スクリーンショット 2013 05 28 9 55 2

 

『利用可能』タブから、『Jenkins Sounds Plugin』にチェックを入れて、インストールボタンを押すだけ。はい簡単。

スクリーンショット 2013 05 28 9 58

 

 

設定をみてみる

インストールが正常に完了すると、Jenkinsのダッシュボードに以下のような『Sounds』という項目ができているはずです。

スクリーンショット 2013 05 28 10 25

とりあえず、これをクリックしてみましょう。

テスト用の画面が表示されます。

ここで重要なのは、『Sounds Output』に記載されている『(see http://127.0.0.1:8080/jenkins/sounds/jsonpdemo)』というリンクだけです。

あとは読み飛ばしましょう。

 

ジョブに通知音を仕込む

それではジョブに通知音を仕込んでみましょう。

今回はサンプルなので、通知音を鳴らすだけのジョブを新規に作成します。

スクリーンショット 2013 05 28 10 34

 

『ビルド後の処理』から、『Jenkins Sounds』を選択します。

スクリーンショット 2013 05 28 10 35

 

Jenkins Soundsの項目を追加すると、通知音の設定を追加できます。

何も考えず『Add sound』をクリック

スクリーンショット 2013 05 28 10 37

 

すると、ビルド結果の指定と、通知音を設定できるようになります。

スクリーンショット 2013 05 28 10 38

 

 

通知音を鳴らすタイミングは『On build result』で設定します。

設定できるタイミングは以下の5つ

  • Not build
  • Aborted
  • Failure
  • Unstable
  • Success

成功とそれ以外を知りたいので、とりあえずSuccessとFailureあたりを追加しておきます。

 

通知音の種類は『Play sound』で適当に選択します。

なんかたくさんあるので、適当なものを選択しておきます。

 

もう一つ準備

さて、ここまで来てふと『うちJenkinsは仮想サーバでスピーカーもついてねぇよ』とか、『スピーカーはついてるけど、Jenkinsさんがサーバー室に閉じ込められてるんだけど・・・』と思った人は、ここを読んでください。

開発する場所と、同じ場所にスピーカー設置済みのJenkinsを搭載したサーバがある人は読み飛ばしてください。

Jenkins Sound PluginはHTML5のWebAudio機能で、アクセスしているブラウザ上で通知音を再生することが可能です。

ダッシュボード → Jenkinsの管理 → システムの設定 からJenkins Soundsを探しだして、『Play through HTML5 Audio enabled browser』にチェックを入れてください。

スクリーンショット 2013 05 28 15 18

Jenkins Sound Pluginのバージョン0.4では標準でチェックが付いているようです。

 

先ほどのJenkins Soundsの管理画面で表示されていたURL http://[Jenkinsサーバアドレス]/sounds/jsonpdemo を別のタブにでも表示しておきましょう。

 

 

実際に音を鳴らしてみる

 

ここまで来たらあとは通知音を聞いてみましょう。

先ほど作成したジョブを流してみます。

スクリーンショット 2013 05 28 10 40

 

ビルド完了からしばらくおいて、通知音が流れたかと思います。

通知音が出なかった場合は、設定やスピーカーがミュートになっていないか確認してみましょう。

 

これでひとまず、ビルド結果に応じて、Jenkinsから能動的に通知が出来る状態になりました。

 

通知音を変更する

さて、ここまで来ると通知音を自分好みに変えたくなるのが人情というもの。

まずは、通知音の選定です。

ここで重要なのは

  1. 成功/失敗がチーム内でわかりやすい
  2. 成功時はスパっと短めに
  3. 失敗時は、失敗とわかりながらも重たくない音

この3つです。

1つめは言うまでもなく、コミットを行ったプログラマが『あ、今の失敗、俺のコミットかも!』と気がつけるように。

2つめは成功音を長いファンファーレなんかにすると、ビルドの度にファンファーレが鳴り響き、思わずスピーカーをミュートにしてやりたくなるので、短めに。

3つめですが、これが一番重要かと思います。

一時期失敗の通知音を某有名RPGの『冒険の書1が消えました』的な音楽にしてあったんですが、失敗する度に過去のトラウマを刺激され、ビルドする意欲が削られていったのを覚えています。

今は、

  • 成功→某有名RPGのレベルアップ音 or 某ヒゲの配管工がコインを取る音 
  • 失敗→某ヒゲの配管工がやられたときの音

と、比較的軽い音にするようにしています。

 

さて、実際の設定方法ですが

  1. 再生したいwavファイルを用意
  2. そのwavファイルをディレクトリを掘らずに、並列でzip圧縮
  3. jenkinsをホスティングしているサーバにzipファイルをアップロード
  4. Jenkinsダッシュボード → Jenkinsの管理 → システムの設定 → Jenkins Sounds内のSound archive location に先ほどアップロードしたzipファイルのパスを設定する

となっています。

上記手順が済んだら、ジョブを作成した際に出てきた『Play sound』に、アップロードしたファイルが表示されると思います。

あとはお好きなタイミングで、お好きな通知音を設定するだけ。

素敵なJenkinsライフをお過ごしください。

 

0 件のコメント:

コメントを投稿