前項までは、Hubotに対してシェルからメッセージを送っていましたが、HipChat用のAdapterを追加することで、HipChatからメッセージを送ることができるようになります。
HipChatと連携させるためには、これまで利用していたHipChatのアカウントとは別に、Hubot用のアカウントをあらかじめ作成しておく必要があります。HipChatのチーム管理画面の「Users」タブからユーザーの追加ができるので、こちらから作成してください。
登録したメールアドレス宛てにアカウント作成フォームが記載された招待メールが届くので、前述したHipChatのアカウントの作成方法と同様、アカウントの登録を行います。
アカウント登録後、アカウント設定画面の「XMPP/Jabber info」を開きます。この画面に表示されている「Jabber ID」を後ほど使うので、コピーしておいてください。
次に、HipChat用のAdapterをインストールします。次のコマンドを実行してください。
npm install hubot-hipchat --save
インストールが完了したら、次に環境変数を設定します。「bin/hubot」ファイルを次のように編集してください。
#!/bin/sh set -e npm install export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH" export HUBOT_HIPCHAT_JID="アカウントのJID" export HUBOT_HIPCHAT_PASSWORD="アカウントのパスワード" export HUBOT_HIPCHAT_ROOMS="ルームのJID" export HUBOT_LOG_LEVEL="debug" exec node_modules/.bin/hubot "$@"
「HUBOT_HIPCHAT_JID」は先ほどコピーしたJabber IDを、「HUBOT_HIPCHAT_ROOMS」にはHubotに参加させたいルームのJabber IDを入力してください。ルームのJabber IDは「Rooms」タブからルームの情報ページを開くと確認できます。
ここまでで、一度Hubotを起動してみましょう。次のコマンドを実行してください。
bin/hubot -a hipchat
HipChatのチームのチャット画面を開くと、Hubotのアカウントが自動的に入室していることが分かります。アカウントのメンション「@アカウント名」を指定して話し掛けると、コマンドが実行されて自動返信が返ります。例えば「Ping」と入力すると「Pong」が返ってくるので、試してみましょう。
最後に、Jenkinsのジョブを実行するHubotのスクリプトを作成しましょう。「scripts/jenkins-job.coffee」ファイルを新規作成し、次のように記述します。
# Commands:
# hubot jenkins-job <job name>
module.exports = (robot) ->
robot.respond /jenkins-job (.*)/i, (msg) ->
config =
url: 'http://localhost:8080'
job = msg.match[1]
msg.send "ジョブ「#{job}」を実行します。"
robot.http("#{config.url}/job/#{job}/build")
.get() (err, res, body) ->
msg.send "error: #{err}"
msg.send "res: #{res}"
msg.send "body: #{body}"
このスクリプトは、Hubotが「hubot jenkins-job <job name>」という形式のメッセージを受け取ったら、指定されたジョブを実行するAPIを実行する処理を記述しています。JenkinsのURLは「http://localhost:8080」としていますが、ご自身の環境に合わせて適宜修正してください。
スクリプトの編集が終わったら保存し、次のコマンドでHubotを起動します。先ほどと同様、指定したルームに自動的に入室します。
bin/hubot -a hipchat
Hubotに対して「hubot jenkins-job <job name>」という形式でメッセージを送ってみましょう。『ジョブ「<job name>」を実行します。』というメッセージが自動返信され、その後にJenkinsのジョブの実行結果が通知されます。
これで、Jenkinsの管理ページを開くことなくジョブを実行できるようになりました。チームで開発している場合は任意のタイミングでジョブを実行したいことがあると思いますが、これで手軽に実行できるはずです。
本連載では、CI/継続的デリバリにあまり触れていない開発者を対象に、iOSアプリ開発でCI/継続的デリバリを行うために役に立つツールやサービスを計6回にわたって解説してきました。いかがだったでしょうか。
一から全てを導入することは時間もかかり大変ですので、例えば「今回のプロジェクトではJenkinsでビルドするところだけやってみよう」など、負荷がかかり過ぎないように導入してみて、次のプロジェクトではさらにTestFlightを組み合わせてみる、などといったように徐々にステップアップしていくようにすると良いと思います。
あなたが携わるiOSアプリ開発をより良くする上で、本連載が一助となれば幸いです。
ガチで5分で分かるITS/BTS&使えるツール6選
DevOps時代の開発者のための構成管理入門(2):ITS/BTSによるプロジェクト運営7つの勘所と手軽に使える5ツール
グリーはいかにしてJenkinsを導入したのか(2):JenkinsでCIすればiOSアプリのビルドは、もう面倒くさくない
DevOps時代の開発者のための構成管理入門(4):膨大なビルド・テストで泣かないための継続的統合/CI実践ノウハウ
かんばん!〜もし女子高生がRedmineでスクラム開発をしたら(終):Hud美さんと学ぶRedmine×Jenkinsの神アジャイルCopyright © ITmedia, Inc. All Rights Reserved.