検索
連載

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

現代の開発現場において欠かせないCI/継続的デリバリを、iOSアプリ開発に適用するためのツールやノウハウを解説する連載。最終回は、Jenkinsと連携させやすいチャットツールHipChatやBotフレームワークHubotを組み合わせてCIをより効率的に回す方法について解説します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

HipChatとHubotを連携させる

 前項までは、Hubotに対してシェルからメッセージを送っていましたが、HipChat用のAdapterを追加することで、HipChatからメッセージを送ることができるようになります。

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

 HipChatと連携させるためには、これまで利用していたHipChatのアカウントとは別に、Hubot用のアカウントをあらかじめ作成しておく必要があります。HipChatのチーム管理画面の「Users」タブからユーザーの追加ができるので、こちらから作成してください。


図12 ユーザーの追加

 登録したメールアドレス宛てにアカウント作成フォームが記載された招待メールが届くので、前述したHipChatのアカウントの作成方法と同様、アカウントの登録を行います。

 アカウント登録後、アカウント設定画面の「XMPP/Jabber info」を開きます。この画面に表示されている「Jabber ID」を後ほど使うので、コピーしておいてください。


図13 アカウント設定画面の「XMPP/Jabber info」

Adapterのインストール

 次に、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」が返ってくるので、試してみましょう。


図14 HipChatのAdapterの動作確認

Jenkinsのジョブを実行するスクリプトを作成する

 最後に、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のジョブの実行結果が通知されます。


図15 HipChatからのJenkinsのジョブの実行

 これで、Jenkinsの管理ページを開くことなくジョブを実行できるようになりました。チームで開発している場合は任意のタイミングでジョブを実行したいことがあると思いますが、これで手軽に実行できるはずです。

一から全てを導入するのはムリなので

 本連載では、CI/継続的デリバリにあまり触れていない開発者を対象に、iOSアプリ開発でCI/継続的デリバリを行うために役に立つツールやサービスを計6回にわたって解説してきました。いかがだったでしょうか。

 一から全てを導入することは時間もかかり大変ですので、例えば「今回のプロジェクトではJenkinsでビルドするところだけやってみよう」など、負荷がかかり過ぎないように導入してみて、次のプロジェクトではさらにTestFlightを組み合わせてみる、などといったように徐々にステップアップしていくようにすると良いと思います。

 あなたが携わるiOSアプリ開発をより良くする上で、本連載が一助となれば幸いです。

著者プロフィール

諏訪悠紀

アンダースコア株式会社でiOS/Androidのアプリの開発に携わっています。


ブログGoogle Play StoreiTunes App Store


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る