Jenkins + HipChatをHubotなしで連携する

JenkinsとHipChatを連携させると、Jenkinsジョブの結果をHipChatに通知したり、HipChatからbotコマンドを投げてJenkinsのジョブを起動したりすることができます。 HipChatそのものや、Hubotを使った連携のさせ方は以下を参照。

iOSアプリ開発でもCI/継続的デリバリしようぜ(終):Jenkins+HipChat+Hubotをチーム開発に導入してお手軽CI (1/3) - @IT

で、Hubotを運用するのも面倒なので、Jenkinsプラグインだけでお気軽にbotコマンド対応させる方法がこちらです。

設定方法

HipChatにJenkins用のアカウントを作成する

Jabber Pluginが使用する、HipChatのアカウントを作ります。Jenkins側では、XMPP/Jabber infoで表示される値を設定していきます。上記のサイトに詳しい手順が載っています。

アカウントを作成したら、利用したいチャットルームを作成しておき、アカウント設定ページからJabberでの設定値を確認しておきます。

f:id:taktos:20140826191952p:plain

JenkinsにJabber Pluginをインストールする

他のプラグインを入れる方法と変わりありません。アップデートセンターからインストールできます。 HipChat Pluginとの違いは、このプラグイン自体がbot機能を持っていることです。

HipChatはXMPPプロトコルに対応しているので、HipChat PluginのようにAPIを経由せずとも、XMPPに対応するJabber Pluginで普通に利用できるのです。

Jenkinsの設定

Jenkinsのシステム設定で、Jabber Pluginの設定を行います。

f:id:taktos:20140826192509p:plain

HipChatで作成したJenkins用アカウントのJabber IDとPasswordを入れ、「高度な設定」を押すと出てくるNicknameJenkins UsernameにHipChatのRoom nicknameを入力します。

Initial group chatには、botコマンドを待ち受けるグループチャットを任意の数追加できます。Nameには、HipChatのルーム名+@conf.hipchat.comを入力します。

この設定後、JenkinsのログにHipChatとの接続状況が出力されます。もしエラーが出てる場合は、メッセージを見ておかしいところを修正してみてください。

使ってみる

ジョブ結果の通知

Jenkinsからジョブの結果を通知するには、ジョブの設定ページにて、ビルド後の処理にJabber Notificationを追加します。

f:id:taktos:20140826193734p:plain

Targetsには、* + HipChatのルーム名 + @conf.hipchat.com を指定します。高度な設定から、通知する内容を変更することもできます。

botコマンド

Initial group chatに設定したHipChatのチャットルームで !help と打ってみましょう。うまく接続できていれば、Jenkinsがボットコマンドの一覧を返してくれます。

f:id:taktos:20140826193535j:plain

!build <ジョブ名> で任意のジョブをキックしたり、!statusでジョブの成功・失敗を一覧で取得したりすることができます。

というわけで、Jenkinsのジョブをキックするためのスクリプトを書いたりせず、お気軽に連携させることができました。めでたしめでたし。