kkamegawa's weblog

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

VSTSやTFSをより便利に使う拡張機能

はじめに

marketplace.visualstudio.com

Visual Studio Team Services(VSTS)および、Team Foundation Server(TFS)を便利に使うための拡張機能が公開されています。大部分の拡張機能は無料で使えます。ただし、拡張機能が呼び出すサービスが有償になっているものがあるので、気を付けてください。サーバーを使うようなものは有償が多いですね。

marketplace.visualstudio.com

このTeams統合のように「Get Stated」としか書かれてない拡張機能は、クリックすると使い方のページへリンクがあるだけで、特にインストールすることなく使えます。同様の拡張機能にSlack, Office 365 Integrationがあります。

昔はユーザー拡張機能しかなかったけど、今はVSTS自身が提供しているというものも少なくありません。例えばKubernetesタスクは牛尾さんが作られたものが長く利用されていましたが、最近VSTS公式からも提供されています。

docs.microsoft.com

marketplace.visualstudio.com

標準のタスクはオープンソースになっているはずです。

github.com

どっちがいいか見比べるのはなかなか難しいと思いますが、便利なものを使ってください。

私のアカウントにもいくつか入れていますが、便利そうなものをピックアップして紹介します。もちろん私が見てないだけのものもあるので、よさそうなものがあったら、ぜひ教えてください。

コード系

marketplace.visualstudio.com

コード検索機能を提供します。TFSはErastic Searchを使っているので、VSTSもおそらくそうだろうと思います。

ビルド とリリース

Package Management(有償)

marketplace.visualstudio.com

6人以上が使う場合は有償になります。

npm, maven, nugetのプライベートフィードをサポートします。開発(スプリント)期間中は特定のパッケージで固定したいという要望はよくあります。オリジナルソースでlatestをとってくると開発者が自動的に更新してしまうということが防げます。もちろん外部に公開できないパッケージを管理するときにも便利です。

Replace Tokens

marketplace.visualstudio.com

ビルド時にソースコードの特定の場所を書き換えたいという要望はたまにあります。例えば、ソース中にGitのコミットハッシュを埋め込んでおいて、改ざんやバージョン検知に使います。そんな希望をかなえてくれる拡張機能です。

SonarQube

marketplace.visualstudio.com

ソース実行時に静的解析したい場合、別のSonarQubeサーバーを呼び出して、ビルド結果に表示できるようになります。

marketplace.visualstudio.com

自分でSonarQubeサーバーを動かしたくない人向けにSonarCloudというものもあります。拡張機能は無償ですが、SonarCloudは有償です。

ストアへリリース

Apple, Google, Microsoftの各ストアへアプリをリリースする拡張機能も用意されています。

marketplace.visualstudio.com

marketplace.visualstudio.com

marketplace.visualstudio.com

marketplace.visualstudio.com

ストアじゃないけど、PowerShell Garallyへの発行をサポートします。

LaunchDarkly

marketplace.visualstudio.com

Feature Flagをサポートする拡張機能です。拡張機能自身は無償ですが、サービスは有償です。

Pester unittest build task

marketplace.visualstudio.com

PowerShellのUnit Testを実行するPasterをビルド時に呼び出します。テスト結果はVSTSが解釈できるXML形式になっているので、ビルド結果概要にも表示されます。

SQL Serverデプロイ

marketplace.visualstudio.com

Visual Studio Enterpriseに含まれるReadyRollをサポートする拡張機能です。データベースの変更点、デプロイスクリプトがビルド結果概要に表示されます。

Apache Tomcat

marketplace.visualstudio.com

Tomcatも対応してます。私自身はTomcatへのデプロイは使ったことないですが、更新されているようなので、大丈夫でしょう、たぶん。

GitHub Tool

marketplace.visualstudio.com

GitHubへのリリースするときはこれが強力だと思います。

IncrediBuild

marketplace.visualstudio.com

VSTSのビルドの弱点の一つはやや非力(Azure VMでいえば、Standard D2s v3レベル)なことです。ビルドのパイプラインを分割することはできますが、重いビルドタスクは早くなりません。

そんな時IncrediBuildを使えば、重いソリューションファイルのビルドを複数のマシンで並列実行できるようになります。IncrediBuildそのものは有償なので気を付けてください。

VSTSで使ったことはないのですが、おそらくプライベートエージェントじゃないと使えないだろうとは思います。

VSTS Chromium Build Task

marketplace.visualstudio.com

Chromeがヘッドレス化したので、UIテストとか非常にやりやすくなりました。ただ、Chromeのポータブル版というのはまだなかったはずで、インストールが必要になるのがネックでした。

このタスクはオープンソース版のChromiumを使って自動テストするためのものだそうです。

Post Build Cleanup

marketplace.visualstudio.com

VSTSが提供するビルド環境は実行時きれいにされているはずですが、そうはいっても残したくない、という事情はあると思います。

TFSでも同じでこちらは明示的にきれいにされるタイミングがビルドを実行した後、(確か)過去5回分はディスク上に残っています。機微情報がディスクにあると困る、という場合はこれを使ってください。

ただ、消してしまうと、ビルド後のトラブル調査がやりにくくなるので、conditional taskでデバッグ実行時はこのタスクを実行しないなどの工夫が必要になります。

StyleCop Runner Build Task

marketplace.visualstudio.com

ソースコードの書式が期待通りになっているか確認するStyleCopを呼び出します。masterブランチへのCIビルドではなく、ブランチポリシーなどで実行するのがいいでしょう。

Ansible

marketplace.visualstudio.com

Ansibleを使うための拡張機能です。現在Windowsサーバーは管理できないので、Linux用ですね。WindowsではDeployment Groupsがあるので、そちらで、という感じでしょうか。

コラボレーション系

Contributions Graph

marketplace.visualstudio.com

GitHubにある、草(Activity Graphが緑色だから)がVSTSにもほしい、という話はよく聞きます。そんな願いをかなえる拡張機能です。

VSTS CLI

marketplace.visualstudio.com

TFS/VSTSのコマンドラインツールです。Visual Studioに組み込まれているtf.exeコマンドはWindows専用なので、クロスプラットフォーム向けには今後こちらが押されていくと思います。

全部の操作ができるわけではない(APIも非公開のものが多い)ですが、tf.exeとちがって、引数の補完機能もあるので、こちらが便利ですね。

オープンソースなので、バグや貢献はGitHubでどうぞ。

他サービスとの連携

Microsoft Flow

marketplace.visualstudio.com

VSTSのイベントによってFlowを使って他サービスとの連携をします。便利だとは思うのですが、VSTSのAPIがどうもそれっぽくないというか、もう一つかませないと使いづらいかもしれません。

Project Integration

marketplace.visualstudio.com

TFSやVSTSはMS Project Serverとの連携をサポートしなくなりました。代わりにこの拡張機能を使ってください、ということだそうです。

BitBucket, Jenkins, GitHubとの連携

docs.microsoft.com

GitHub, Jenkinsはソース取得元、リリース用のartifact、BitBucketはソース取得元として使用できるようになりましたので、拡張機能はいりません。

計画系

Delivery Plans

marketplace.visualstudio.com

複数のチームがある場合、「隣のチームがいつ何をリリースするのか」という情報共有は大変になります。Delivery Planはそういう複数のチームのスプリントを可視化してくれます。

複数のチームがあるような環境ではとても便利です。

Analytics(現在プレビューのため無償)

marketplace.visualstudio.com

バーンアップ、バーンダウン、ベロシティなどの各種ウィジェット、OData Endpoint、Power BIとの統合といった機能を提供します。

Power BIに関しては今のところ作業項目だけのようです。

Test系

Test & Feedback

marketplace.visualstudio.com

これはTFS/VSTSではなく、ブラウザーにインストールする拡張機能です。VSTS/TFSでチーム開発しているWebサイトのここがおかしいようなところがあったら、すぐに開発チームにフィードバックとして登録できます。

開発チームはフィードバックが全部終わったら、みたいなリリースゲートをリリースに仕掛けておけば「フィードバック全部終わったかな」ということをいちいち確認する必要はありません。

Edge用の拡張機能はcoming soonのままもう2年くらいたっている気がするんですが…。

VSTS/TFSを使ってなくても、画面キャプチャ機能としても使えます。以前書いたのでこちらを読んでください。

kkamegawa.hatenablog.jp

kkamegawa.hatenablog.jp

Test Manager(有償)

marketplace.visualstudio.com

これはVisual Studio Enterprise/Testサブスクリプションか、月ぎめのサブスクリプションがないと使えませんが、テスト管理には便利です。

スプリント単位でのテストを管理して、どのくらい消化したか、ブラウザーでテストステップを見ながら実行して、どこでどういう失敗したのかということがわかります。

また、環境ごとのテストケース管理もできるので、例えば、Windows 10のEdge / Firefox / Chromeといったブラウザーごとにテストの管理もできます。自動テストもサポートしていますが、それはおいおい紹介します。

Offline Test Execution

marketplace.visualstudio.com

いつでもVSTSにつながればいいのですが、そうもいかない環境もあります。そんな時にテストケースだけでもみたい、という場合、この拡張機能を使えばTest Managerで管理しているテストケースをExcelに出力して、テスト実行後またインポートすればVSTS側にも反映されます。

Code Coverage Widget

marketplace.visualstudio.com

すぐにわかりますよね。ビルド定義のコードカバレッジの状態をウィジェットでダッシュボードに表示するものです。

その他

Contribution Guid

marketplace.visualstudio.com

サードパーティーのVSTS拡張機能を使うとき、いくつかのVSTSのアカウントに関する情報を入れることがあるかもしれません。そういう情報を簡単に表示するための拡張機能です。

docs.microsoft.com

実際どんな情報が表示されるか、という点に関してはこちらに載っています。

AWS Tools

marketplace.visualstudio.com

AWSを使う方はどうぞ。

Shell exec task without file

(追記)
marketplace.visualstudio.com

忘れてた。Linux/macOS限定ですが、これも便利です。Windowsのコマンドプロンプトからのインラインタスクはバッチファイルを用意することなく複数行の処理がかけるので、ちょっとした処理でもバッチファイルをレポジトリに登録する必要がありませんでしたが、bash shellタスクではワンライナーしかできませんでした。牛尾さんが作られたこのタスクはその助けになります。

ちなみにPowerShellタスクもあるのですが、こちらはインラインでは確か500byteくらいまでです。どうしても長いタスクを書きたくて、製品グループにはたびたび要望が出るのですが拒否されます。私も要望出したことがあります…。

docs.microsoft.com