Visual Studio Team Services と Azure Logic Apps と、時々、Slack
はじめに
Visual Studio Team Services(以下、VSTS)のService HooksとAzure Logic Appsを使ってSlackに通知がくるようにする設定の話。
できるもの
VSTSがイベント発火するタイミングでWeb Hooksから外部ツールに連携して、jsonとかメッセージとか渡すヤツ。
背景(雑談)
対象:SlackとVSTS使ってて"1つのSlackチームで複数のプロジェクト(repository)を管理したい"人向け。
個人的な経緯:
githubのhubotの存在を知る ↓ すげええ!!ってなる。(*´▽`*) ↓ Slackに導入するため調べる( ^ω^)・・・ ↓ Visual Studio Team Servicesという拡張アプリを見つける。('Д') ↓ なんだこれでいいじゃんってなる。( ;´Д`) ↓ でも、1つのチームで1つのプロジェクトしか管理できない。(´゚д゚`) ↓ チャンネルごとにプロジェクト(repository)管理したい!(1つのチームで複数のプロジェクト(repository)を管理したい!)(`・ω・´) ↓ Service Hooks使えばできるんじゃね(←今ココ)(・ω・)ノ
用意するもの
Azure Logic Appsの設定
- 自分のサブスクリプションに Logic Appを追加。
- 編集する。
2-1. 新しいステップで"HTTP要求の受信時", "JSONの解析", "Slack - 投稿メッセージ" を追加する。 cf ) それぞれ「新しいステップ」で検索ワードは[ "HTTP", "JSON", "Slack" ]ででてきます。
2-2. 各々設定する。
"HTTP要求の受信時"
特に何もしなくていいです。
が、後ほどここのURL使いますので、コピーしておいてください。
"JSON解析"
(どんなJSONが送られてくるのかは後ほど確認の方法を記載します)
一例:
{ "properties": { "createdDate": { "type": "string" }, "detailedMessage": { "properties": { "text": { "type": "string" } }, "type": "object" }, "eventType": { "type": "string" }, "message": { "properties": { "text": { "type": "string" } }, "type": "object" }, "resourceVersion": { "type": "string" } }, "type": "object" }
"slack - 投稿メッセージ"
以下の設定をします。(認証後)
- 投稿するチャンネル名(private channelだと補完されないので直接チャンネル名を書き込みましょう。)
- メッセージテキスト...具体的にどんなテキストをSlackに投稿するかを書きます。
詳細設定で投稿するBot名など変更できるので興味があったらどうぞ。
VSTSの設定
- メニューバーの歯車の中の「Service Hooks」をおす。
+ボタンを押す。
その中の「Web Hooks」を選択する。
Triggerの設定をする。 ここでVSTSへのアクションをトリガーとして設定できる。(イベント発火)
ex) build時、デプロイ時、プルリク時 等々
設定項目の[Any]を候補に出てくる適当なものを選択する。
ここでいうbuild とか Release はVSTS上でデバックをするので、そのlogicを別途用意しないと候補として出ない。 (詳細は後日記載)
5.Triggerの設定をする。 ここで叩くURLをセットする。(先ほどのコピーしたURLをここに貼る)
ここまでの手順でとりあえずTestが押せるようになるので、押してみてください。
そこのRequestタブを押す。
スキーマに関してはLogic APP のJSON解析のタブの中に「サンプルのペイロードを使用してスキーマを生成する」があるので、こっちを使ったほうがいいかもしれないです。
スキーマを作成したらJSON解析のスキーマに書き込んでください。
上記の一例のスキーマでpullrequestが来た時、デプロイできたときの2つのイベントを受けて出てきたやつです。
以上でやりたいことができたと思います。
目指せGitHubと同じ開発環境!!
バイン