Travis CIのテスト結果をHipChatに通知する

前回の記事に関連して、このリポジトリTravis CIを使って継続的インテグレーションを行うようにしたので、そのテスト結果をHipChatにも通知されるようにした。こんな感じ。

HipChat notification

テストに失敗すると以下のような感じで、怒りに満ちた王蟲の目のような赤色に。

HipChat notification

通知系を設定する場合は、APIトークンを入力するか、設定画面でポチッとするだけで簡単な事が多いけど、パブリックリポジトリでのTravis CIは、設定を.travis.ymlに記述するので情報が公開されてしまう。それを回避するために暗号化する方法が提供されている。

travis encrypt

まずはtravis gemをインストールする。このgemは、Travis CIに関する各種操作をCLIから実行できるもので、前述の暗号化もこれを利用する。このgemのtravis encryptコマンドを使用して、対象の文字列を暗号化できる。

今回はHipChatへの通知を行うためのAPIトークンチャットルーム名がその対象になる。

$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
$ gem install travis
$ cd [PROJECT ROOT]
$ travis encrypt [APIトークン]@[チャットルーム名] --add notifications.hipchat.rooms

ドキュメントに書かれているように、APIトークン@チャットルーム名の書式で記述する必要があるので、travis encryptコマンドでも同じように指定して暗号化を行う。--addオプションは、暗号化した結果の文字列を自動で.travis.ymlに追記してくれるもので、上記を実行すると.travis.ymlの末尾に以下のような通知設定が追記されているはず。

notifications:
  hipchat:
    rooms:
      secure: faqwuptB9Hajlgb5Lh/WcKoREic+ZDO9EGCc28kgI+8PIY+d+xovsvbu6flJZymzr9g9s4rtP/HHrU+YODIo5k1EnGtspcVZY3e7nCQOYwRxlYoISUl9du9tqETmQr35hwwe/fq1cjOlMdayvqqmUFpXWetQey9+gQfuvE44q1c=

ちなみにAPIトークンは、HipChatのサイトにログインした状態でこのURLにアクセスするとトークン生成用のページに移動できる。APIトークンを生成するには管理者権限が必要。また、チャットルーム名の一覧ページにはこのURLからアクセスできる。

最終的に、暗号化された通知設定部分を追加した状態の.travis.yml全体はこちら