kkamegawa's weblog

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

Visual Studio Team ServicesとFirefoxで未知のバグを探索する

年末休暇中ですが、Firefox版Test & Feedback拡張機能が公開されました。

marketplace.visualstudio.com

f:id:kkamegawa:20161227051611p:plain

EdgeがComming soon!ですが、いつになるのかなー。Downloadをクリックすると、拡張機能のファイルがダウンロードされるので、Firefoxのタブにドロップすると、インストールが開始されます。まだFirefoxの拡張機能の一覧からの検索はできないようですね。

f:id:kkamegawa:20161227051612p:plain

問題なければインストール。

f:id:kkamegawa:20161227051613p:plain

GUIはChrome版と全く変わらないですね。

f:id:kkamegawa:20161227051614p:plain

VSTSもしくはTFSのURLを指定します。

f:id:kkamegawa:20161227051615p:plain

使用するチームを選択して、Saveをクリックすると、チームに接続されます。ここから先は以前書いたChrome版と変わらないので、以下の記事を参考にしてください。

kkamegawa.hatenablog.jp

ブラウザごとに違うチームに接続するもよし、ブラウザ固有のバグ探索するもよし、使ってみてください。

Visual Studio Team Servicesとエコシステム(25日目)

はじめに

一人アドベントカレンダーの最終日はちょっと毛色を変えて、VSTSのエコシステムについて書いておきます。実はまだ書いていないもの色々あるのですが、それはおいおい追加します。

VSTSとつながるIDEなど

VSTSにはSubversionのような中央型のリポジトリのTFVCと、分散型のGitの二種類をサポートしています。TFVCはチームプロジェクトで一つのみですが、Gitは複数のリポジトリがサポートされています。

Git

Visual StudioからGitをソリューションエクスプローラ経由で使う場合、Visual Studio 2015 Update3以降を使ってください。Visual Studio for Macがリリースされていますが、monodevelopベースということもあり、Gitのみ使えます。GitをサポートしているIDEやGitコマンド(Git for Windowsなど)で、ssh/httpsが使えればなんでもつながります。

f:id:kkamegawa:20161225173616p:plain

標準でこれだけサポートしています。

f:id:kkamegawa:20161225163605p:plain

Visual Studio for Macでつなぐ場合の例です。事前にPAT(Personal Access Token)を作っておいてください。

f:id:kkamegawa:20161225163606p:plain

IDEの場合は基本codeのpush,pullなどができればいいはずですが、VS Codeの場合はもうちょっと広くとります。

VS Codeの拡張機能

marketplace.visualstudio.com

VS CodeはそのままでもGitの機能を持っていますが、拡張機能をインストールすると、作業項目の作成、閲覧、pull requestの確認ができます。探してみたら、他にも有志が作成した、ビルドステータスを確認する拡張機能もあるようです。

この拡張機能はPATでのアクセス前提なので、事前に作成&VS Codeに登録してください。画面下のステータスバーをクリックすると、作業項目やブランチ切り替え、pull request表示ができます。

f:id:kkamegawa:20161225163607p:plain

(画面では出てこないですが)pull request一覧の確認ができます。

f:id:kkamegawa:20161225163608p:plain

チームプロジェクトの作業項目が確認できます。Gitコミット時に # 番号 でGitHub同様に作業項目と関連付けが行われますが、その番号確認に便利です。

TFVC

TFVCは色々対応がアレなこともあって、プラグインをそれぞれ作らないといけないようです。

Team Explorer Everywhere の導入

Javaが動く環境であればTeam Explorer Everywhereという無償ツールを使ってアクセスできますが、いつもVisual Studioよりも少し遅れての提供になるので、最新のVSTS/TFSでは少し制限が出るでしょう。Gitに慣れてないとかの理由がない限り、Visual Studio以外の環境では素直にGitを使った方がいいでしょう。

TFVCをプラグインでサポートしているIDEはEclipse, IntelliJ(自動的にAndroid Studioも)があります。

拡張機能

VSTS/TFS自身で色々できますが、拡張機能も多く提供されています。商用、フリー両方ありますが、見た所オープンソースのものが多いように思えます(数えてはいません)。

marketplace.visualstudio.com

私も10くらいしか入れていませんし、紹介するもので使っているものばかりではありませんが、参考になれば。

marketplace.visualstudio.com

作業項目の検索ができるようになる拡張機能です。今までと違い、日本語の検索もサポートしています。以前紹介したので、そちらもみてください。

kkamegawa.hatenablog.jp

marketplace.visualstudio.com

コード検索をサポートします。TFSの場合Elastic Searchを使っているので、おそらく似たようなものなのでしょう。メソッド名やシンボルといった区分で検索ができるようになります。

Work Item Visualization

marketplace.visualstudio.com

作業項目には親子関係がついていますが、それを視覚化して表示してくれます。メールに添付できるので、便利ですね。

Octopus Deploy build Release

marketplace.visualstudio.com

プラグインは無償ですが、Octopus自身は有償です。Octopus自身は有名なツールなので、大規模デプロイには便利だと思います…多分。

Docker Integration

marketplace.visualstudio.com

私自身がまだDockerそんなに使ってないのですが、MS標準ということで一応。ただ、まだWindows Containerはサポートしていないようです(レビュー欄より)。おそらく早晩サポートされるのでしょうが、Windows Containerを使うときは気をつけてください。

Release Annotations for Azure Application Insights

marketplace.visualstudio.com

Application Insightsのグラフに注釈というか、印をつけられるようになります。頻繁にデプロイしている場合、Application Insightsでエラーが出たタイミングでどのリリースだったかというのがわからなくなることがあるので、そういうケースで便利でしょう。

Azure DevTest Labs Tasks

marketplace.visualstudio.com

Azure DevTest Labsは最小限の操作で仮想マシンが作れる(しかも自動起動/シャットダウンのautomationを自動設定されている)便利なサービスです。そんなVMを管理するタスクです。

Generate Release Notes Build Task

marketplace.visualstudio.com

リリースノートって作るの結構面倒ですよね。そういう作業を自動化してくれるそうです。実は使ったことがないのですが、ちゃんと書くようなものを作る場合は使おうかなと思っています。

Export/Import Build Definition

marketplace.visualstudio.com

似たようなビルド定義を作るという作業はよくあります(ブランチ違いとか、チーム違いとか)。Task Groupという機能で複数のビルドタスクをまとめられるようになりましたが、異なるチームで似たようなタスクを取り込み/入力したい場合便利ですね。

TFS artifacts for Release Management

marketplace.visualstudio.com

一台のVSTS/TFSで完結していればいいのですが、そうでないことは結構あります。組織内のTFSを使って、クラウドのサービスにリリースするというとき、直接繋げず、VSTSを経由したいというような場合です。

SonarQube

marketplace.visualstudio.com

MSが最近力を入れている品質管理系のオープンソースソフト(商用版もある)SonarQubeの拡張機能です。もともとMSがVSTS組み込みで提供していたものがあったのですが、そちらは廃止になるようです。組み込み版ではVSTS内で品質情報が見えるようになるそうです。

StyleCop Runner Build Task

marketplace.visualstudio.com

StyleCopを実行するビルドタスクだそうです。そういうもの

LaunchDarkly Integration

marketplace.visualstudio.com

DevOpsの要素の一つであるFeature FlagをサポートするLaunchDarklyの拡張機能です。拡張機能は無償ですが、LaunchDarklyは有償です(結構いいお値段します)。VSTS自身のリリースでも使っているようですね。

blogs.msdn.microsoft.com

Pester Test Runner Build Task

marketplace.visualstudio.com

PowerShellのテストフレームワークとしてPesterというツールがあります。このPesterを実行するタスクですね。

VSTS Kudu Tasks

marketplace.visualstudio.com

IIS/App ServiceへのデプロイはWebdeployを使う例が多いと思いますが、バックエンドで動いているKudoのAPIを使うこともできます。そんなKudoのAPIを使ってデプロイするタスクですね。デプロイ前にはWebdeployではないけど、zipでパッケージにしておかないといけないようです。

ストア関係

marketplace.visualstudio.com

marketplace.visualstudio.com

marketplace.visualstudio.com

MS,Apple,Googleのストアにリリースするためのタスクですね。

TeamCity artifacts for Release Management

marketplace.visualstudio.com

JetBrainsのTeamCityのartifacts(成果物)をVSTSのRelease Managementで使うための拡張機能です。

まとめ

VSTSには色々拡張機能が提供されていて、多様なニーズが充たせると思います。みんなそんなに入れていないようですが、便利な一本を見つけて、使ってみてください。いいもの見つけたらレビュー書いてみてください。

Visual Studio Team ServiesのREST APIを使ってみる(24日目)

はじめに

今日はちょっと趣向を変えて、VSTSのREST APIを使う方法を紹介します。C#で作ってもいいのですが、今日はPowerShell AdventCalendarと相乗りカレンダーということで、PowerShellで使う方法を紹介します。

私が毎回紹介しているVSTSの翻訳はVSTSにmarkdownの下書きを書いていて、出来上がったらGistに送っています。いいかげん自動化しようと思っていたので、ちょうどいい機会なのでやってみます。どっちかといえば、Gistへの更新のほうが悩みました…。ちなみに、Gistへの登録であれば、PSGistというモジュールがScript Gallaryに公開されています。

www.powershellgallery.com

最初はこれを使おうと思ったのですが、GitHubのパスワードをOSの資格情報マネージャーに記録する方法だったので、残念ながら自動化(Hosted AgentでのCI)には使えません。そのうちforkして改造しようかと思います。

PowerShellからGitHubへのアクセスを解説している動画がChannel9にあるので、こちらもみてください。

channel9.msdn.com

今回はパスワードでの認証ではなく、PATを使うので、PowerShellからGist(GitHub)にアクセスするためのPATを取ります。動画中でも解説されているので、詳しくは省きますが、Gistの権限があればいいはずです。

VSTSのファイルをコミット履歴から取得する

www.visualstudio.com

VSTSのHosted Agentでアクセスするために認証にはPATを使いましょう。最長で1年ですので、忘れたころに更新することになりそうですが。

www.visualstudio.com

  1. 直近のコミットを取得する
  2. コミットの詳細情報を取得する
  3. 変更されたファイルを取得する

という流れになります。3番目の手順で変更一覧が取得できるので、そのitem.pathプロパティにファイル名が入っています。ファイル名をGist側と突き合わせます。

www.visualstudio.com

実はここから時間切れでできてないのですが、指定したファイルをoctect/streamで取得して、gistにアップロードします。

Gistの取得

Gistの取得は簡単です。指定ユーザーのGistを取ってくるAPIたたくだけでいいのですが、ファイルがあるかどうか探すのはちょっと面倒。

Gistの一覧にはFilesコレクションがあり、各ファイルがいわゆるハッシュのキーになっています。なので、Filesコレクションの各ファイルオブジェクト($gistfileオブジェクトに入っているとします)のNotePropertyを取得することでGistのファイル名を取得します。

$gistfile | Get-Member -MemberType NoteProperty | select Name

VSTSのコミット履歴(changeTypeプロパティ)がaddであれば、追加。"edit"であれば、編集となっています。この辺は私の使い方ではaddしかない(masterブランチへのpull requestで追加のみ)はずなので、どうしようかなーと思っているところです。

途中段階のソース

とりあえず上記のフローで書きなぐったのが以下のソースです。あとは判定のテストと、ファイルアップロードができればいいので、お正月中に何とかしようと思っていますw。

RESTあまり使っていなかったのですが、便利ですね。VSTSもこれからはREST APIが強化されるでしょうから使ってみてください。

Copy from VSTS Git Repository to public Gist. It d ...

Visual Studio Team Servicesで単体テストの品質管理をする(23日目)

VSTSで実行する単体テスト

.NET CoreとVSTS

いろいろ調べてみたのですが、残念ながら現在VSTSのHosted Agentは1.0 preview2(3131)なので、VS2015ベースの.NET Core 1.0.0のみサポートです。

  • VS 2017は.NET Core 1.1(Tooling Preview4)なので、Hosted agentではビルドできない
  • VS 2017と.NET Core 1.1を入れてしまうとVS2015で.NET Core 1.0ベースのものが作れなくなってしまう(少なくとも私の環境では)
  • 今のところ.NET Coreアプリのコードカバレッジや単体テストの集計は取れてない…

ということで、この手順を実施するなら、フル.NETアプリケーションでやってください。

ASP.NETプロジェクトのビルドテンプレート

f:id:kkamegawa:20161223214908p:plain

以前はVisual Studioというテンプレートしかなかったのですが、今ではASP.NET Build(Preview)というテンプレートが用意されています。ほとんどVisual Studioと変わらないのですが、webdeployを使ったデプロイタスクが登録されているところが変わります。

はっきり言ってめんどくさい手順だったので、用意してくれるに越したことはありません。

注意点として、Visual Studio TestタスクのOverride Testrun Parametersで/logger:trx /UseVsixExtensions:trueを指定してください。

Code Coverageをチェックすると、コードカバレッジ情報が生成されます。

単体テストと品質履歴

f:id:kkamegawa:20161223214907p:plain

単体テストを有効にしていると、このようにSummaryで単体テストと、コードカバレッジの結果が表示されます。

f:id:kkamegawa:20161223220939p:plain

コードカバレッジに関しては、"Download Codecoverage Results"でダウンロードすると、Visual Studioで表示されるコードカバレッジと全く同じ結果が確認できます。

より詳細に見たい場合はSonarQubeなどを使うといいでしょう。C#であればプラグインは無償です(VB/VB.NETは有償)。

単体テストエラー発生時

f:id:kkamegawa:20161223214912p:plain

一か所コントローラーの単体テストがわざと通らないような変更をコミットします。

f:id:kkamegawa:20161223214909p:plain

当然ビルドが失敗します。

f:id:kkamegawa:20161223214910p:plain

Test詳細ページで、具体的にどのテストが失敗したのか、何パーセントくらい失敗したか、確認できます。

f:id:kkamegawa:20161223214911p:plain

先日、ダッシュボードにBuild状態を表示するタブを作りましたが、今回のようにテストが失敗すると、このように品質グラフや、デプロイの成功/失敗も一目でわかるようになります。

VSTSのダッシュボードはロールや自分たちの関心毎に作るのがいいように思います。

まとめといいわけ

ほんとはこの話はもっと前にやるはずだったのですが、.NET Core + VS2017プロジェクトのHosted Buildがどうしてもうまくいかず、いろいろ調べたらやっぱりだめそうというのがわかり、今日まで引っ張ってしまいました(反省)。

もう少し紹介したいことがありますが、それは25日超えてからにします。

明日はPowerShellアドベントカレンダーとの相乗りで一つ紹介します。