kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Visual Studio Team Servicesの外部サービス連携を使う-Teams編(22日目)

はじめに

VSTSには外部のWebサービスと連携する機能があります。イベントとしては多くないのですが、いろいろな通知が一か所にまとめられるといいものです。そんなサービス連携を紹介します。

Teamsとの連携

Microsoft Teams – グループ チャット ソフトウェア

TeamsはMSが先日からOffice 365サービスの1つとして提供している要はSlackやHipChat, ChatWorkみたいなやつです。Office 365のひとつなので、同じアカウントを共有するVSTSとの連携は結構楽です。ちょっとやってみましょう。

Teamsの設定に関しては省略します。

f:id:kkamegawa:20161222055522p:plain

Teamsで通知用のチャネルを作っておいて、そのチャネルにVisual Studio Team Servicesのコネクタを追加します。

f:id:kkamegawa:20161222055524p:plain

使用するアカウントおよび、VSTSのテナント名を指定します。既定ではデフォルトのMSアカウントになっているかもしれないので、気を付けてください。現時点において、MSアカウントを連携に使用することはできません。必ずOffice 365のアカウントを使ってください。

f:id:kkamegawa:20161222055523p:plain

いつも通りアプリケーションの承認します。いつでもVSTS側で取り消しできます。

f:id:kkamegawa:20161222055525p:plain

Teamsへの通知を指定します。ビルドやリリース、作業項目とかありますね。訳語がいまいち統一されていない(作業アイテムと作業項目など)のはスルーで。

f:id:kkamegawa:20161222055526p:plain

区分と種類がありますが、ここでは全部通知させます。大きなチームになったら、VSTSのチームごとに通知とかにしましょう。VSTSでチームを作った場合、区分パスがそのままAreaに該当しているので、わかりやすいはずです。

kkamegawa.hatenablog.jp

チームに関してはこちらをどうぞ。

f:id:kkamegawa:20161222055527p:plain

VSTSでWork Itemを作るとこのように通知されました。

f:id:kkamegawa:20161222055528p:plain

チャネルへの通知は複数設定できます。同様にビルドが完了した通知を設定してみましょう(大体同じなので省略)。

f:id:kkamegawa:20161222055531p:plain

こんな風にビルド完了通知がきます。

VSTSのService Hook

実はこの機能、TeamsがVSTSへのService Hookに登録することで実現しています。VSTSから外部サービスへの登録もできるのですが、office 365関係のサービスの場合、Office 365から操作することが前提になっています。VSTSからOffice 365のService Hookはしないでください(やろうとしてもエラーになります)。

f:id:kkamegawa:20161222055529p:plain

こんな感じで、Office 365のWeb Hookが追加されています。ここから編集できそうな気がしますが、絶対に編集しないでください。削除する場合は必ずTeams側から実施します。

これはほかのOffice 365サービスのFlowを使う場合でも同じです。ちなみにFlowの場合はMSアカウントのVSTSのサービス呼び出しができるんですよね。はやくTeamsもサポートしてほしいものです。

f:id:kkamegawa:20161222055530p:plain

Teams以外にもSlackやHipChatへの通知も標準で提供されています。ChatWorksはないようですが、Web Hookが提供されているので、それでやればいいんじゃないでしょうか。

まとめ

というわけで、VSTSの通知機能の紹介でした。Slack一強みたいな感じでしたけど、Teamsこれからどうなるんでしょうね。標準でOffice 365のアカウント連携して使えるのは非常に便利なので、Office 365ユーザーには受けそうです。

VSTSのAPIもartifactへのアクセス手段とかもうちょっとあればいいんですが(ないですよね…)。

www.visualstudio.com

Visual Studio Team ServicesのデータをPower BIで可視化する(21日目)

はじめに

VSTSのデータを可視化して一括で見たいという話はよくあります。そういうときのためにVSTSはPower BIでデータを抜き取って表示できます。Power BIはVSTSだけではなく、GitHubやほかのデータソースにもアクセスできます。MSDNを持っていれば有償のProが使えます。

blogs.msdn.microsoft.com

powerbi.microsoft.com

Power BIのサインアップについては省略します。

データを取得

f:id:kkamegawa:20161221055538p:plain

データを取得から「サービス」の「取得」をクリック。 f:id:kkamegawa:20161221055539p:plain

Visual Studio Team Servicesがあるので、「入手する」

f:id:kkamegawa:20161221055540p:plain

接続先のアカウントは hoge.visualstudio.com であれば、hoge だけ入力します。Project名は * を入れれば全プロジェクトが対象になりますが、推奨されていません。見たいプロジェクトだけを指定します。

f:id:kkamegawa:20161221055541p:plain

OAuth2で認証します。

f:id:kkamegawa:20161221055542p:plain

アプリケーションの承認でVSTSへのアクセスを許可します。ちなみにMSアカウントで承認する場合、たまにデータの同期がとれなくなるようなので、見えなくなったら作り直したほうがいいようです。今回はどちらも同じ組織アカウントでやってるのでたぶん大丈夫の…はず。

f:id:kkamegawa:20161221055543p:plain

データのインポートにはしばらく時間がかかります。終了後、初期データが見えます。ぼっちプロジェクトなので寂しいですw。

f:id:kkamegawa:20161221055544p:plain

レポートでは各種の状態のレポートがタブになっています。ここではOpen状態のバグデータですね。

f:id:kkamegawa:20161221055545p:plain

Scrumプロジェクトテンプレートで作っているので、Scrum Sprint Statusにもデータが入っています。AgileやCMMIタブには何も入っていないので、消してもいいでしょう。

f:id:kkamegawa:20161221055546p:plain

Gitのコミット状態も見えます。TFVCで作っている場合、Team Foundation Version Controlタブで同様のデータが見えます。

f:id:kkamegawa:20161221055547p:plain

Power BIサイトで見るのもいいですが、外部のWebページやVSTSのダッシュボードで見たいところですよね。「Webに公開」で埋め込み用のリンクが作成できます。

f:id:kkamegawa:20161221055548p:plain

埋め込み用のコードを使う場合、プライベートなデータが意図せず漏れることになるので注意してください。今回の場合、プライベートであるVSTSに埋め込むので基本問題はありません。

f:id:kkamegawa:20161221055549p:plain

ダッシュボードに昨日紹介した方法でPower BIというタブを作り、そこにhtmlウィジェットでPower BIのリンクを貼り付けます。iframeなどのhtmlタグは不要で、httpのリンクのみ指定します。

f:id:kkamegawa:20161221055550p:plain

で、こんな風にVSTSにPower BIのデータが貼りつきます。簡単ですね!

作業項目でチャートを見る

作業項目に関してはWorkタブの中の各種クエリ結果をグラフで確認できます。

f:id:kkamegawa:20161221065908p:plain

今回の場合Assigned to meのNew Chartから

f:id:kkamegawa:20161221065909p:plain

Work Itemの種類を円グラフに。

f:id:kkamegawa:20161221065910p:plain

棒グラフにしてみました。

まとめ

Power BIのコンテンツパック、実は更新されていないようで、例えば新しいビルドシステムやRelease Managementの状態が見えません。オンプレミスのTFSであればSQL Serverなので、どうにでもなる(最悪Power BIにみせればいい)のですが、VSTSの場合コンテンツパックを更新してくれないとどうしようもありません。

usersvoiceで言ってみてください(英語)。私からもちょっと聞いてみようとは思っています。

Visual Studio Team Serviceのダッシュボードを使って作業を可視化する(20日目)

はじめに

VSTSのチームを開いたとき、ダッシュボードが表示されます。デフォルトでも必要十分な情報がありますが、やはりダッシュボードであるからにはwidgetを貼りたいものです。ということで、ダッシュボードのカスタマイズ方法を紹介します。

初期状態

f:id:kkamegawa:20161220204126p:plain

初期状態ではこんな感じですね。Dashboardの編集権限があるアカウントでは右下に鉛筆マークが出るので、ここをクリックして編集します。

f:id:kkamegawa:20161220204125p:plain

Welcomeタブをクリックすると、チームのWelcomeページが表示されます。これはwelcome.mdというファイルになっているので、それを編集すればいいです。

f:id:kkamegawa:20161220204128p:plain

右上のスパナアイコンをクリックすると、ダッシュボードにタブを追加できます。今回はBuildというタブを追加して、ビルドやリリース関係の情報を集めます。

Auto-refreshにチェックすると自動的に更新されます。ビルド状態のようにいつ変わるかわからないデータを表示するタブではチェックしましょう。

Widget紹介

f:id:kkamegawa:20161220204129p:plain

  • Assigned to Me : ログオンユーザーに割り当てられている作業を表示します。初期状態で表示されています。
  • Chart for Build History : 指定したビルド定義の成功・失敗および所要時間の概略をグラフにします。
  • Chart for Work Items : 指定した作業項目の種類に応じてグラフにします。

f:id:kkamegawa:20161220204130p:plain

  • Code Tile : コードリポジトリに対して変更された数を表示します
  • Deployment status : デプロイ状態を表示します
  • Embedded Webpage : 外部のページをiframeで表示します。

f:id:kkamegawa:20161220204131p:plain

  • Markdown : Markdownで書いた簡単なメモを表示します
  • New Work Item : 新規のWork Item(Backlog, Task, Featuresなど)を作ります
  • Other Links : Feedbackクライアントなどを起動するためのリンクです。

f:id:kkamegawa:20161220204132p:plain

  • Pull Requests : Pull Requestの一覧を表示します。
  • Query Results : Workタブで作成したクエリの実行結果を表示します。
  • Query Tile : 指定したクエリの件数を表示します。

f:id:kkamegawa:20161220204133p:plain

  • Release Definition Overview : リリース定義ごとの状態を表示します。
  • Requirements Quality : 要求項目に対する自動テストの品質を表示します
  • Sprint Burndown : スプリントのバーンダウンチャートです

f:id:kkamegawa:20161220204134p:plain

  • Sprint Capacity : スプリントごとの作業許容量です。これはわかりにくいので、次のSprint Overviewを使うことをお勧めします。
  • Sprint Overview : スプリントの残り時間と消化した作業の割合を表示します。
  • Team Members : チームに所属しているメンバーを表示します

f:id:kkamegawa:20161220204135p:plain

  • Team Rooms : あまり出来が良くないチャットみたいなやつです。SlackやOffice 365のTeamsを使ったほうがいいでしょう。
  • Test results trend : 指定したテストの品質をチャートにして表示します。
  • Visual Studio Shortcuts : Visual Studioを起動するためのリンクがあります。まぁ必要ないでしょう。

f:id:kkamegawa:20161220204136p:plain

  • Welcome : Welcomeページの内容です
  • Work Links : 作業項目のリンクです。

下にあるExtensions Gallaryをクリックすると、Widgetのギャラリーが表示されます。

f:id:kkamegawa:20161220204137p:plain

今日現在で24種類登録されています。GitHubとかAzure Application Insightsのウィジェットは結構便利そうです。FREEのものが多いですね。

ビルド関係のWidgetを追加する

f:id:kkamegawa:20161220204138p:plain

順番が変わりましたが、Buildタブにビルド関係のウィジェットを追加してみましょう。Markdownはビルド時の注意事項などを書いておけばいいでしょう。ウィジェット右上の…からスパナアイコンをクリックすると、ウィジェットの設定ができます。

f:id:kkamegawa:20161220204139p:plain

Chart for Build historyではTitleとビルド定義を指定します。一つのウィジェットに一つの定義しか設定できません。ビルド定義が増えた場合、タブを分割するとか、全部みるとか、ダッシュボードで工夫してください。以下同じです。

f:id:kkamegawa:20161220204141p:plain

Deployment Widgetでは、ビルド定義、ブランチ名、リリース環境名、テスト結果をどのグラフで見るか選択します。

f:id:kkamegawa:20161220204142p:plain

Release Definition overviewでは、参照するリリース定義を一つだけ指定します。

f:id:kkamegawa:20161220204143p:plain

Test results trendでは指定したビルドの単体テストの品質をグラフにします。

f:id:kkamegawa:20161220204144p:plain

ビルド関係のウィジェットを貼り付けてみました。いちいち定義を見なくても一覧で見えるので非常に便利ですね。

Widget SDK

www.visualstudio.com

WidgetはJavaScriptとhtmlで作ってzipにして公開することになるようですね。VSTSの全機能はまだWeb APIでアクセスできない…はずなので、一部に限られますが、外部サイトの情報を表示するのでもいいと思います。

まとめ

ダッシュボードでの視覚化は凝り始めるといろいろできますが、ビルドステータスとかは結構すぐに使えていいと思いますよ。

Visual Studio Team Servicesの負荷テストをCI/CD時に実施する-JMeter編(19日目)

今日は追い込まれたので手抜きです(でも予定通りです)。

はじめに

VSTSの負荷テスト機能はVisual Studioだけではなく、Apache JMeterも対応しています。以前も少し紹介しましたが、多少強化されています。

kkamegawa.hatenablog.jp

制限事項

www.visualstudio.com

  • JMeter 3.1をサポートしているという記述を見つけられません。一応試してみたのですが、Cookie Managerでエラーが出てしまいます。
  • HTTPリクエストのみサポートです。
  • 要素名に日本語を使わないほうがいいです。
  • Graphなどのビジュアルを持つリスナーは使わないでください。

設定

Jmeter 2.13で設定します。

f:id:kkamegawa:20161219220916p:plain

グラフィカルなリスナーを除外します。ちょっと色々試行錯誤しているのですが、最後の結果表示がうまくいっていません…。

f:id:kkamegawa:20161221055537p:plain

(2016/12/20追記)
JMeterのThreadGroupの設定で、ループ回数を指定していると思いますが、「無限ループ」にチェックしてください。これを設定しないと、VSTSの負荷テストが指定回数で打ち切ってしまうので、正しくグラフが出るほど回数が実施されません。

f:id:kkamegawa:20161219220914p:plain

Load TestからApache JMeter testをクリックします。

f:id:kkamegawa:20161219220917p:plain

jmxファイルを指定します。

  • Supporting files:動的に変更するパラメータファイルを指定します。
  • Number of agents:同時に負荷をかけるエージェント数です。1エージェントで最大25userが同時にアクセスできるそうです
  • Load duration:アクセスする時間です。
  • Load location:実行するAzureデータセンターです。

ライセンスの計算は公開されていますが、1分であったとしても、最低250vuserが消費されるようです。

CI/CD時に実施する

f:id:kkamegawa:20161219220913p:plain

ビルドタスクにJMeterがあるので、追加します。

f:id:kkamegawa:20161219220915p:plain

  • VS Team Service Endpoint:昨日紹介した方法でVSTSへのアクセスエンドポイントを指定します。
  • Apache JMeter test files folder:jmxファイルが入っているリポジトリのフォルダ名を指定します。
  • Apache JMeter file:jmxファイルをパスなしで指定します。
  • Agent count:同時に使用するagent数です。
  • Run Duration:実行時間です。なぜかここでは2分という設定ができます。

結果

f:id:kkamegawa:20161219220912p:plain

結果ファイルはDownload ResultsでCSVとしてダウンロードできます。本当はVSTSでも見えるはずなのですが、なぜかうまくいっていません…もうちょっと調べます。

(2016/12/20追記)前述のとおりうまくいきました。 f:id:kkamegawa:20161220214937p:plain

指定した分数の負荷がかかっています。JMeterのThread数がVSTSではUSER LOADに相当しています。

f:id:kkamegawa:20161220214938p:plain

chartでもちゃんと出ています。

f:id:kkamegawa:20161219220918p:plain

Azureの方でも負荷はかかっています(Application Insights設定忘れ…)。

f:id:kkamegawa:20161218204630p:plain

ビルドもこんな風に成功しています。SSL関係でエラーが出ているようですが…。

まとめ

超手抜きですが、一応AzureデータセンターからJMeterでも負荷テストがかけられます。3.1に本当に対応しているのかとか、FTPもサポートして欲しいとか、色々要求はありますが、どうなっているのか、少し確認してみます。

(12/21追記)
やはりまだJMeter 3.xには対応していないようです。UserVoiceでも要求が出ているので、voteしてみてください。2.13で作ったjmxを編集してもうまく動くことは動くようですが、保証はできません。

How can we improve Team Services?
  • 11 votes
  • 1 comment

Support jMeter 3.0

Please upgrade support for jMeter load tests to support the latest version.

Right now, the supported version for jMeter test scripts in Visual Studio Online is v2.13 (c.f. https://www.visualstudio.com/en-us/docs/test/performance-testing/getting-started/get-started-jmeter-test#jmeter-tests).

...

visualstudio.uservoice.com