読者です 読者をやめる 読者になる 読者になる

Jack of all trades

master of none. 多芸は無芸を地で行く、自作自演何でも屋。

Visual Studio OnlineのService HooksでPull Requestのイベント通知が飛ばない

Visual Studio Online

※追記:本記事の内容は2014年10月15日現在のものです。恐らく時とともに解決するもの(と信じている)なので、その点ご了承ください。

※更新:思ったより早く解決しました↓
VisualStudioOnlineのServiceHooksその後 - Jack of all trades

最近Visual Studio Online上のチームプロジェクト(ソース管理はGit)を利用しているんですが、イベント通知にメール使うのはちょっとアレだし、チームルーム使うためだけに上位のサブスクリプション使うのもコストパフォーマンスが悪い。
ということで、暮らし安心アトラシアンのHipchatにイベントをフックしてもらうことにしました。

詳細は以下参照(横着)
Visual Studio Online と HipChatを連携する - きよくらの備忘録

と、ここまでは良かったのですが、実際に「Pull Request Created」を通知する設定を施してもHipchatに通知が飛んでこない。。。
あれやこれやと調べまわった結論、

APIは実装されているし、表面上はイベントとして「Pull Request Created」を選択できるが、実際は対応していない

ということらしいです。

完全に裏が取れたわけではないですが、調査した限りを以下に記します。

Service Hooksの設定画面上には表示される

Service Hooksで対象となるサービスを選択する画面。
「Suported Events」に「Pull Request Created」が含まれています。

f:id:sadynitro:20141016125457p:plain

Service Hooksでフックするイベントを選択する画面。
やはり「Pull Request Created」が選択できます。

f:id:sadynitro:20141016125504p:plain

APIは提供されている

Visual Studio OnlineのREST APIリファレンスを見ても、Pull RequestのAPIは提供されている様子。 http://www.visualstudio.com/en-us/integrate/reference/reference-vso-git-pullrequests-vsi

f:id:sadynitro:20141016125453p:plain

Eventsリファレンスも同様。
http://www.visualstudio.com/en-us/integrate/get-started/get-started-service-hooks-events-vsi

f:id:sadynitro:20141016125447p:plain

Service Hook Consumersのページでは含まれていない

「Service Hook Consumers」のページでは、Suported EventsにPullRequestに関するイベントが含まれていません。 これはHipchatに限らず、全てのサービスで同様です。
http://www.visualstudio.com/en-us/integrate/get-started/get-started-service-hooks-consumers-vsi

f:id:sadynitro:20141016125508p:plain

「Subscribe to Visual Studio Online events from another service」のページでも、ServiceHooksで提供されるイベントにPullRequest関連は含まれていないので、やはり現状は提供されていないのが正であると考えられます。
http://www.visualstudio.com/en-us/integrate/get-started/get-started-service-hooks-creating-and-managing-vsi

フォーラムで同様の事象に遭遇した事例も

ひたすらフォーラムを巡っていたら以下のスレッドに遭遇しました。 https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/1f5a675d-d97f-4ab3-a58f-8d18f5e0cf0b/service-hook-for-pull-requests-not-fired-when-commented-on?forum=TFService

内容的に恐らく同じような目的でService Hooksを使おうとして通知が飛ばないことについて質問しているのですが、回答としては「間違って(Pull Requestに関するイベントを)サポート対象に含めてるような感じでリリースしちゃったけど今は対象のドキュメントからその内容を削除したよ」的なことだと解釈しました。
2014年8月のやり取りですが、状況が変わってなければ今も対象外ということになります。

まとめ

APIとしては提供されているので、恐らく近いうちに提供されるのでは…と思っておりますが、実際どうかは不明です。
※そもそもこの記事の内容が間違っていて、利用方法をご存知の方がいらっしゃいましたら@sady_nitroに薪割りダイナミックをお見舞いしてください。

どうしてもPull Requestイベントを通知しないと困る!という方は、上記の通りAPIは提供されているので、差し当たりは自力対応ということになりそうです。