魔王のサタンぶろぐ

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の設定

  1. 自分のサブスクリプションに Logic Appを追加。
  2. 編集する。

2-1. 新しいステップで"HTTP要求の受信時", "JSONの解析", "Slack - 投稿メッセージ" を追加する。

f:id:satansatohgg:20171127142731p:plain
こんな感じにつないであげる
cf ) それぞれ「新しいステップ」で検索ワードは[ "HTTP", "JSON", "Slack" ]ででてきます。

2-2. 各々設定する。

"HTTP要求の受信時"

特に何もしなくていいです。

が、後ほどここのURL使いますので、コピーしておいてください。

"JSON解析"

実際にほしいデータを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に投稿するかを書きます。

f:id:satansatohgg:20171127144126p:plain
直接書いたり、JSON解析したproperty名を参照するといい感じにできます。

詳細設定で投稿するBot名など変更できるので興味があったらどうぞ。

VSTSの設定

  1. メニューバーの歯車の中の「Service Hooks」をおす。
    f:id:satansatohgg:20171127140651j:plain
    Service Hooks選択後
  2. +ボタンを押す。

  3. その中の「Web Hooks」を選択する。

    f:id:satansatohgg:20171127140657p:plain
    WebHooks選択

  4. Triggerの設定をする。

    f:id:satansatohgg:20171127140701p:plain
    Triggerの種類
    ここでVSTSへのアクションをトリガーとして設定できる。(イベント発火)

ex) build時、デプロイ時、プルリク時 等々

設定項目の[Any]を候補に出てくる適当なものを選択する。

ここでいうbuild とか Release はVSTS上でデバックをするので、そのlogicを別途用意しないと候補として出ない。 (詳細は後日記載)

5.Triggerの設定をする。 ここで叩くURLをセットする。(先ほどのコピーしたURLをここに貼る)

ここまでの手順でとりあえずTestが押せるようになるので、押してみてください。

f:id:satansatohgg:20171127145340p:plain
押すとこんなテスト画面が出る

そこのRequestタブを押す。

f:id:satansatohgg:20171127145426j:plain
Context以下が送られるJSON

ここでほしいJSONを探してスキーマ対象にします。

JSONの整形やスキーマツールはこの辺がお勧めです。

jsoneditoronline.org

jsonschema.net

スキーマに関してはLogic APP のJSON解析のタブの中に「サンプルのペイロードを使用してスキーマを生成する」があるので、こっちを使ったほうがいいかもしれないです。

スキーマを作成したらJSON解析のスキーマに書き込んでください。

上記の一例のスキーマでpullrequestが来た時、デプロイできたときの2つのイベントを受けて出てきたやつです。

f:id:satansatohgg:20171127151446j:plain
てってれー。(一例のやつのデモ)

以上でやりたいことができたと思います。

目指せGitHubと同じ開発環境!!

バイン