engine yardにdeployを行った時、Chat Workへ自動で通知を行うための設定です。

Chat WorkのAPIはAPIトークンをhttpヘッダーに追加する必要があるのでdeploy hookでcurlを使って行ってみました。

1.API申請

現在プレビュー版なのでチャットワークにAPIの使用申請を行います。

http://developer.chatwork.com/ja/

2.APIトークンの発行

確認のメールが届いたら

http://developer.chatwork.com/ja/authenticate.html

こちらを参考にAPIトークンの発行を行います。

3.engine yardのdeploy hookに追加

githubに登録しているリポジトリのデプロイフックにChat WorkのAPIを叩く処理を追加します。

階層は

/リポジトリのルート/deploy

ここではデプロイ後に通知しようと思うのでafter_bundle.rbに追記します。

[rb]

notify_deploy_environments = %w(staging production development)
notify_deploy_roles = %w(solo app_master)

if notify_deploy_environments.include?(environment) && notify_deploy_roles.include?(current_role)

run "curl -X POST -H ‘X-ChatWorkToken: チャットワークのAPIトークン’ -d ‘body=Deploy+#{config.environment_name}+Done%21\nDeploy+by:#{config.deployed_by}\nrepo:#{config.repo}\nrevision:#{config.revision}%21’ ‘https://api.chatwork.com/v1/rooms/書き込みたいチャットルームID/messages’"
end

[/rb]

※一行が長いのでスクロールしてみるかctl+aしてください。

環境がstaging,production,developmentのときでapp_masterかsoloの場合のみに通知します。(複数台構成で全て通知される必要は無いため)

runでコマンドを叩きます。コマンドの内容は基本Char Workのマニュアルのままです。

http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages

もう少し見やすく整形出来るかもしれません。見やすい方法を作ったら教えて下さい。

deploy_hookを作成したら

gitのリポジトリに最新版としてアップしてください。

deploy時では今上げたリポジトリを指して、engine yardのダッシュボードからdeployを行ってください。

成功すれば上記のようにdeployの情報が自動的にChat Workに流れるます。