LoginSignup
3

More than 5 years have passed since last update.

Microsoft Flowを使ってSlackからVisual Studio Team Servicesのビルドを実行する

Posted at

 概要

  • SlackからVSTSのビルドをトリガーできるようにします
  • Slack、VSTSの連携にMicrosoft Flowを使用します
  • ビルド実行結果の通知はSlackとVSTSを直接連携します
  • こんなイメージ

chatops.png

事前準備

本題

VSTSのビルド完了通知をSlackに

こちらの記事の Slackにチェックインを通知する の項目がまさしくなので省略します。
誰でもできる!VSTSとSlackの超簡単な連携方法

Slack、VSTS、Flow連携設定

  1. Slack上で「Apps & Integrations」をクリックします。
    スクリーンショット 2017-07-23 21.32.26.png

  2. (ブラウザに飛んで)「Outgoing WebHook」を検索して選択します。
    スクリーンショット 2017-07-23 21.51.28.png

  3. 「Add Configuration」をクリックします。
    スクリーンショット 2017-07-23 21.55.14.png

  4. 「Add Outgoing WebHook integration」をクリックします。
    スクリーンショット 2017-07-23 21.55.26.png

  5. Integration Settingsで「Channel」に通知対象の部屋を、「Trigger Words」にWebHookの起点となるフレーズを登録ます。
    スクリーンショット 2017-07-23 21.55.55.png

  6. Micorosoft Flowのマイフローページに移動し、「一から作成」をクリックします。
    スクリーンショット 2017-07-23 22.09.21.png

  7. トリガーの追加で「要求と応答 - 要求」を選択します。「要求本文の JSON スキーマ」は現状「サンプルのペイロードを使用してスキーマを生成する」に{ "sample": "test"} と入力して設定されるものでかまいません。
    スクリーンショット 2017-07-23 22.12.04.png

  8. アクションとして「Visual Studio Team Services - Queue a new build」を設定します。初回設定時には認証を求められます。
    スクリーンショット 2017-07-23 22.16.28.png

  9. 「Account Name」、「Project Name」、「Build Definition Id」をドロップダウンから選択します。
    スクリーンショット 2017-07-23 22.17.21.png

  10. アクションとして「Slack - 投稿メッセージ」を選択します。
    スクリーンショット 2017-07-23 22.36.40.png

  11. サインインしてAuthorizeしてください。
    スクリーンショット 2017-07-23 22.36.49.png

  12. VSTSでのビルド開始後にSlackに通知するときの「チャネル名」、「メッセージテキスト」を選択します。メッセージには「動的なコンテンツ」として別のアクションからの出力を埋め込むことができます。ビルド完了後の通知はVSTSとSlackを直接連携させているのでこの設定とは別です。
    スクリーンショット 2017-07-23 22.37.36.png

  13. 「フローの更新」で一旦保存します。

  14. 「要求」を開き、URLをコピーします。
    url.png

  15. SlackのIntegration Settingsに戻り、URL(s)に14でコピーしたURLをペーストします。
    slackurl.png

以上で設定完了です。Slackに戻って設定したフレーズを投稿して動作確認してみましょう。

サービス連携時に次のような投稿もされているはずなので、念のため合わせて確認してみてください。

スクリーンショット 2017-07-23 22.59.26.png

FAQ

なんでMicrosoft Flow使うん?Logic Apps使えばいいんちゃうん?

FlowとLogic Apps.png
Flow、Logic Apps、Functions、WebJobs の比較より

とのことで、最初Logic Appsで構築しようとしました。

が、今VSTSとの接続に問題があり、連携できずになんとかMS Flowで間に合わせたという事情があります。

Logic AppsでVisual Studio Team Servicesへの接続認証を保存できません。回避策はありますか?

なんでSlackのWebHook無条件に受けて入れてるん?条件で絞るべきちゃうん?

「想定するtokenのときだけビルドする」みたいな条件で絞るべきだと思います。

ただ、現状SlackのWebHookで送信されるのはこういうもので「要求」で受け取れるjsonではありません。

token=bJ21uDt3aR4OITjUSeYuldZ2
team_id=T0001
team_domain=example
channel_id=C2147483705
channel_name=test
timestamp=1355517523.000005
user_id=U2147483697
user_name=Steve
text=googlebot: What is the air-speed velocity of an unladen swallow?
trigger_word=googlebot:

リクエストのBodyに上記相当のパラメタは入っているのでMicrosoroft Flowで使用できるフィルターや条件でマッチさせる、ということも考えられますが

「Body」 に 「xxxxx」 の値を含む

みたいな条件を足しても動かなかったのでとりあえず上記のような形で置くことにしました。僕のやり方が間違ってる可能性もだいぶあるので、うまくいった方教えてくださいm(_ _)m

今回のような専用のコネクタを使わずにがんばれば実現できる方法はあるようですが、専用のコネクタの「プレビュー」がとれたら実現できると信じつつ待ちます!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3