はじめに
Visual Studio Team Services(VSTS)および、Team Foundation Server(TFS)を便利に使うための拡張機能が公開されています。大部分の拡張機能は無料で使えます。ただし、拡張機能が呼び出すサービスが有償になっているものがあるので、気を付けてください。サーバーを使うようなものは有償が多いですね。
このTeams統合のように「Get Stated」としか書かれてない拡張機能は、クリックすると使い方のページへリンクがあるだけで、特にインストールすることなく使えます。同様の拡張機能にSlack, Office 365 Integrationがあります。
昔はユーザー拡張機能しかなかったけど、今はVSTS自身が提供しているというものも少なくありません。例えばKubernetesタスクは牛尾さんが作られたものが長く利用されていましたが、最近VSTS公式からも提供されています。
標準のタスクはオープンソースになっているはずです。
どっちがいいか見比べるのはなかなか難しいと思いますが、便利なものを使ってください。
私のアカウントにもいくつか入れていますが、便利そうなものをピックアップして紹介します。もちろん私が見てないだけのものもあるので、よさそうなものがあったら、ぜひ教えてください。
コード系
Code Search
コード検索機能を提供します。TFSはErastic Searchを使っているので、VSTSもおそらくそうだろうと思います。
ビルド とリリース
Package Management(有償)
6人以上が使う場合は有償になります。
npm, maven, nugetのプライベートフィードをサポートします。開発(スプリント)期間中は特定のパッケージで固定したいという要望はよくあります。オリジナルソースでlatestをとってくると開発者が自動的に更新してしまうということが防げます。もちろん外部に公開できないパッケージを管理するときにも便利です。
Replace Tokens
ビルド時にソースコードの特定の場所を書き換えたいという要望はたまにあります。例えば、ソース中にGitのコミットハッシュを埋め込んでおいて、改ざんやバージョン検知に使います。そんな希望をかなえてくれる拡張機能です。
SonarQube
ソース実行時に静的解析したい場合、別のSonarQubeサーバーを呼び出して、ビルド結果に表示できるようになります。
自分でSonarQubeサーバーを動かしたくない人向けにSonarCloudというものもあります。拡張機能は無償ですが、SonarCloudは有償です。
ストアへリリース
Apple, Google, Microsoftの各ストアへアプリをリリースする拡張機能も用意されています。
ストアじゃないけど、PowerShell Garallyへの発行をサポートします。
LaunchDarkly
Feature Flagをサポートする拡張機能です。拡張機能自身は無償ですが、サービスは有償です。
Pester unittest build task
PowerShellのUnit Testを実行するPasterをビルド時に呼び出します。テスト結果はVSTSが解釈できるXML形式になっているので、ビルド結果概要にも表示されます。
SQL Serverデプロイ
Visual Studio Enterpriseに含まれるReadyRollをサポートする拡張機能です。データベースの変更点、デプロイスクリプトがビルド結果概要に表示されます。
Apache Tomcat
Tomcatも対応してます。私自身はTomcatへのデプロイは使ったことないですが、更新されているようなので、大丈夫でしょう、たぶん。
GitHub Tool
GitHubへのリリースするときはこれが強力だと思います。
IncrediBuild
VSTSのビルドの弱点の一つはやや非力(Azure VMでいえば、Standard D2s v3レベル)なことです。ビルドのパイプラインを分割することはできますが、重いビルドタスクは早くなりません。
そんな時IncrediBuildを使えば、重いソリューションファイルのビルドを複数のマシンで並列実行できるようになります。IncrediBuildそのものは有償なので気を付けてください。
VSTSで使ったことはないのですが、おそらくプライベートエージェントじゃないと使えないだろうとは思います。
VSTS Chromium Build Task
Chromeがヘッドレス化したので、UIテストとか非常にやりやすくなりました。ただ、Chromeのポータブル版というのはまだなかったはずで、インストールが必要になるのがネックでした。
このタスクはオープンソース版のChromiumを使って自動テストするためのものだそうです。
Post Build Cleanup
VSTSが提供するビルド環境は実行時きれいにされているはずですが、そうはいっても残したくない、という事情はあると思います。
TFSでも同じでこちらは明示的にきれいにされるタイミングがビルドを実行した後、(確か)過去5回分はディスク上に残っています。機微情報がディスクにあると困る、という場合はこれを使ってください。
ただ、消してしまうと、ビルド後のトラブル調査がやりにくくなるので、conditional taskでデバッグ実行時はこのタスクを実行しないなどの工夫が必要になります。
StyleCop Runner Build Task
ソースコードの書式が期待通りになっているか確認するStyleCopを呼び出します。masterブランチへのCIビルドではなく、ブランチポリシーなどで実行するのがいいでしょう。
Ansible
Ansibleを使うための拡張機能です。現在Windowsサーバーは管理できないので、Linux用ですね。WindowsではDeployment Groupsがあるので、そちらで、という感じでしょうか。
コラボレーション系
Contributions Graph
GitHubにある、草(Activity Graphが緑色だから)がVSTSにもほしい、という話はよく聞きます。そんな願いをかなえる拡張機能です。
VSTS CLI
TFS/VSTSのコマンドラインツールです。Visual Studioに組み込まれているtf.exeコマンドはWindows専用なので、クロスプラットフォーム向けには今後こちらが押されていくと思います。
全部の操作ができるわけではない(APIも非公開のものが多い)ですが、tf.exeとちがって、引数の補完機能もあるので、こちらが便利ですね。
オープンソースなので、バグや貢献はGitHubでどうぞ。
他サービスとの連携
Microsoft Flow
VSTSのイベントによってFlowを使って他サービスとの連携をします。便利だとは思うのですが、VSTSのAPIがどうもそれっぽくないというか、もう一つかませないと使いづらいかもしれません。
Project Integration
TFSやVSTSはMS Project Serverとの連携をサポートしなくなりました。代わりにこの拡張機能を使ってください、ということだそうです。
BitBucket, Jenkins, GitHubとの連携
GitHub, Jenkinsはソース取得元、リリース用のartifact、BitBucketはソース取得元として使用できるようになりましたので、拡張機能はいりません。
計画系
Delivery Plans
複数のチームがある場合、「隣のチームがいつ何をリリースするのか」という情報共有は大変になります。Delivery Planはそういう複数のチームのスプリントを可視化してくれます。
複数のチームがあるような環境ではとても便利です。
Analytics(現在プレビューのため無償)
バーンアップ、バーンダウン、ベロシティなどの各種ウィジェット、OData Endpoint、Power BIとの統合といった機能を提供します。
Power BIに関しては今のところ作業項目だけのようです。
Test系
Test & Feedback
これはTFS/VSTSではなく、ブラウザーにインストールする拡張機能です。VSTS/TFSでチーム開発しているWebサイトのここがおかしいようなところがあったら、すぐに開発チームにフィードバックとして登録できます。
開発チームはフィードバックが全部終わったら、みたいなリリースゲートをリリースに仕掛けておけば「フィードバック全部終わったかな」ということをいちいち確認する必要はありません。
Edge用の拡張機能はcoming soonのままもう2年くらいたっている気がするんですが…。
VSTS/TFSを使ってなくても、画面キャプチャ機能としても使えます。以前書いたのでこちらを読んでください。
Test Manager(有償)
これはVisual Studio Enterprise/Testサブスクリプションか、月ぎめのサブスクリプションがないと使えませんが、テスト管理には便利です。
スプリント単位でのテストを管理して、どのくらい消化したか、ブラウザーでテストステップを見ながら実行して、どこでどういう失敗したのかということがわかります。
また、環境ごとのテストケース管理もできるので、例えば、Windows 10のEdge / Firefox / Chromeといったブラウザーごとにテストの管理もできます。自動テストもサポートしていますが、それはおいおい紹介します。
Offline Test Execution
いつでもVSTSにつながればいいのですが、そうもいかない環境もあります。そんな時にテストケースだけでもみたい、という場合、この拡張機能を使えばTest Managerで管理しているテストケースをExcelに出力して、テスト実行後またインポートすればVSTS側にも反映されます。
Code Coverage Widget
すぐにわかりますよね。ビルド定義のコードカバレッジの状態をウィジェットでダッシュボードに表示するものです。
その他
Contribution Guid
サードパーティーのVSTS拡張機能を使うとき、いくつかのVSTSのアカウントに関する情報を入れることがあるかもしれません。そういう情報を簡単に表示するための拡張機能です。
実際どんな情報が表示されるか、という点に関してはこちらに載っています。
AWS Tools
AWSを使う方はどうぞ。
Shell exec task without file
(追記)
marketplace.visualstudio.com
忘れてた。Linux/macOS限定ですが、これも便利です。Windowsのコマンドプロンプトからのインラインタスクはバッチファイルを用意することなく複数行の処理がかけるので、ちょっとした処理でもバッチファイルをレポジトリに登録する必要がありませんでしたが、bash shellタスクではワンライナーしかできませんでした。牛尾さんが作られたこのタスクはその助けになります。
ちなみにPowerShellタスクもあるのですが、こちらはインラインでは確か500byteくらいまでです。どうしても長いタスクを書きたくて、製品グループにはたびたび要望が出るのですが拒否されます。私も要望出したことがあります…。