Visual Studio Team Services の最新情報: 2018 年 3 月のまとめ

執筆者: Buck Hodges (Director of Engineering, VS Team Services)

このポストは、2018 年 3 月 5 日に投稿された What's brewing in Visual Studio Team Services: March 2018 Digest の翻訳です。

 

このブログ シリーズでは、3 週間ごとに Visual Studio Team Services (VSTS) のリリースに関する最新情報をお届けします。Visual Studio Team Services は、効率的な継続的インテグレーションと Azure へのリリース パイプライン構築に最適な DevOps ツールです。Team Services の機能が急速に拡大する中で、チームは使用する言語やデプロイ先の OS を問わず、あらゆるアプリの Azure ワークフローのすべての分野で Team Services を効率的に活用することができます。

Azure Red Shirt Dev Tour: マイクロソフトの VSTS アカウント

マイクロソフトの Scott Guthrie は、Azure Red Shirt Dev Tour (英語) という開発者向けのコーディング イベントを世界各地で開催しています。その中で、VSTS の開発に使用しているチームのアカウントを公開して、マイクロソフトが VSTS の計画、ビルド、テスト、リリースに VSTS を使用していることを紹介しています。大規模なチームでの VSTS の使用方法に関する Scott の VSTS デモ (英語) をご覧ください。このデモでは、マイクロソフトのアカウント (mseng.visualstudio.com) を使用して、ニューヨークのイベント ステージからリアルタイムで進行中の VSTS の開発作業の模様をお伝えしています。マイクロソフトのチームの開発手法を詳しく知りたい場合は、「Microsoft における DevOps」を参照してください。

VSTS account demo

ロードマップの更新

マイクロソフトでは、VSTS 新機能のロードマップ (英語) を定期的に更新しています。先日リリースした最新版 (英語) はこれまでで最大規模の更新となりました。

既存のビルド定義から YAML テンプレートを生成

昨年発表したパブリック プレビュー版 (英語)YAML ビルド (英語) では、YAML ファイルとしてビルド プロセスを構成して、GUI のビルド定義エディターの代わりにコードを使用してチェックインすることができます。今回の更新では、Web UI のビルド定義を YAML ファイルに変換する手順を簡素化しました。ビルド定義エディターの左にある [Process] タブを選択し、右ウィンドウの [View YAML] リンクをクリックします。テキストをクリップボードにコピーし、コンテンツを含むファイルをリポジトリにチェックインします。次に、チェックイン ファイルを参照する YAML ベースのビルド定義を使用して、新しいビルドを構成します。

これは、YAML を短期間で習得するのに効果的です。アプリごとに最適なテンプレートで新しいビルド定義を作成して YAML を検証することで、従来のビルド定義と新しい YAML コンストラクトの相対関係を理解できます。以下は、YAML ビルドに役立つリソースです (今年後半には Release Management でも YAML をサポートする予定です)。

マルチフェーズ ビルドの機能強化

注: この機能を使用するには、アカウントで [Build with multiple queues] のプレビュー ( 英語) を有効にする必要があります。

先日、ビルド定義にフェーズを追加しました。この機能を使用すると、ビルド ステップを整理したり、フェーズごとの要求を使用して異なるエージェントをターゲットに設定したりできます。さらに今回、以下のようなフェーズ作成のための機能を追加しました。

  • フェーズごとに異なるエージェント キューを指定することで、以下のような作業ができるようになります。
  • ビルドの 1 つのフェーズを macOS エージェントで実行し、別のフェーズを Windows エージェントで実行する。この機能の活用例については、Connect(); 2017 の動画、モバイル アプリおよびサービスの CI/CD DevOps パイプライン (英語) をご覧ください。
  • ビルド エージェント プールでビルド ステップを実行し、テスト エージェント プールでテスト ステップを実行する。
  • 並列でテストを実行して実行時間を短縮する。「Multi-agent」として構成されている並列処理と「VSTest」タスクを含むフェーズでは、構成された数のエージェント間でテストが自動的に並列で実行されます。
  • フェーズごとに OAuth トークンにアクセスするスクリプトを許可または拒否する。たとえば、REST API 経由で VSTS と通信するビルド フェーズのスクリプトを許可すると同時に、同じビルド定義のテスト フェーズのスクリプトをブロックすることができます。
  • 特定の条件下のみでフェーズを実行する。たとえば、前のフェーズが成功した場合や、マスター ブランチでコードを作成している場合にのみフェーズを実行するように構成することができます。

詳しくは Build と Release Management のフェーズ (英語) を参照してください。

Hosted VS2017 エージェントでの UI テストとソフトウェア インストール

「必要なソフトウェアのイメージが入手できない場合に、ホスト ビルド エージェントにソフトウェアをインストールできるようにしたい」というご意見が多くのお客様から寄せられていました。今回これにお応えして、[Hosted VS2017] キューを使用している場合、ビルドとリリース タスクをインタラクティブ モードの管理者権限で実行できるようになりました。これにより、このホスト プールを使用して UI テストを実行したり、必要なソフトウェアをインストールしたりできます。ビルド後に毎回ビルド エージェントの再イメージングが行われるため、すべてのビルドをクリーンな環境で開始することができます。

リリース トリガーのブランチの機能強化

ビルド定義で指定されている既定のブランチに基づいて、リリース トリガー フィルターを構成できるようになりました。この機能は、既定のビルド ブランチの変更をすべてのスプリントに反映して、リリース定義全体のリリース トリガー フィルターを更新する必要がある場合に特に役立ちます。今後は、ビルド定義の既定ブランチを変更するだけで、すべてのリリース定義に自動的に反映されるようになります。たとえば、各スプリントのリリース ペイロードのリリース ブランチを作成する場合、ビルド定義で新しいスプリントのリリース ブランチを参照するように更新すると、変更が自動的に反映されます。

不安定なテスト (Flaky Test) を特定

DevOps においては、信頼性の高いスピーディな自動テストが基本原則です。しかし、一度失敗したテストを再実行したら成功するという、不安定なテストも存在します (もちろん、テストが不安定なのではなく製品コードに原因がある場合もあります)。不安定なテストは、チーム内のストレスや不安にもつながります。不安定なテストが解決されないままノイズとして扱われてしまうと、運用環境にバグが流出することになります。そこで今回、不安定なテストの問題に対処する初のソリューションをデプロイして、Visual Studio Test タスクで失敗したテストの再実行を構成できるようになりました。テスト結果には、初回で失敗し、再実行時に成功したことが記されます。これは、調査や修正が必要な不安定なテストを特定する重要な手がかりとなります。今後、データ ドリブン テストと順序指定テストでも再実行がサポートされる予定です。

Visual Studio Test タスクでは、失敗したテストの再実行回数の上限と失敗のしきい値 (%) を制御することができます。たとえば、失敗のしきい値を 20% に設定しておくことで、大部分が失敗した場合に自動でテストが再実行されないようにします。

[Build and Release] の [Tests] タブでは、[Passed on rerun (再実行時に成功)] というフィルターでテスト結果を絞り込み、不安定なテストを特定することができます。現時点では、再実行時に成功した各テストの最後の結果が表示されます。[Summary] ビューの [Total tests] には、[Passed on rerun (n/m)] と表示されます。n は再実行で成功したテストの数、m は成功したテストの合計数を表します。すべての結果を表示する階層型ビューは、今後のスプリントで追加される予定です。

適切なエージェントを既定で選択

テンプレートを使用して新しいビルド定義を作成する場合に、ホストされたエージェント キューが既定で選択されるようになりました。たとえば、Ant テンプレートと Maven テンプレートの既定値は [Hosted Linux] キュー、Xcode テンプレートと Xamarin.iOS テンプレートの既定値は [Hosted macOS Preview] (英語)、ASP.NET Core テンプレートの既定値は [Hosted VS2017] になります。もちろんキューは自由に変更可能ですが、既定値が設定されることで、新しいビルド プロセスを定義する時間が短くなり、適切なエージェント キューを設定し直す手間が省けます。

VSTS をシンボル サーバーとして使用

VSTS は、シンボルをホストして組織と共有できるシンボル サーバーです。今回、このシンボル サーバー機能の一般提供を開始しました。シンボルが持つ追加情報により、実行可能ファイルのデバッグが容易になります。詳しくはデバッグ用シンボルの公開 (英語) を参照してください。

この機能は、特に要望の多い提案 (英語) として優先的に開発されました。

Blame で履歴を確認

[Blame] ビューは、コード行を最後に変更したユーザーを特定するのに便利です。しかし、それよりも前に変更を加えたユーザーを確認したい場合もあります。[Blame] ビューに新しく追加された [View blame prior to this commit (このコミット以前の変更履歴を表示)] では、名前のとおり、変更されたバージョンの 1 つ前のファイルにさかのぼって特定の行の変更履歴を表示することができます。さらに前までさかのぼり、選択したコード行が変更されたファイルの各バージョンを確認することもできます。

プル リクエストのマージ コミットを表示

プル リクエストの差分ビューは、ソース ブランチに導入された変更を強調表示するのに便利です。しかし、ターゲット ブランチを変更すると、差分ビューが想定したとおりに表示されない場合があります。そこで今回、プル リクエストの「プレビュー」マージ コミットの差分を表示する新しいコマンド、[View merge commit] を追加しました。このマージ コミットは、マージの競合をチェックしたり、プル リクエストのビルドで使用したりするもので、プル リクエスト完了時にマージ コミットのプレビューを確認できます。ターゲット ブランチの変更が差分ビューに反映されていない場合には、マージ コミットの差分ビューを使用して、ソース ブランチとターゲット ブランチの両方の最新の変更内容を確認することができます。

[View merge commit] コマンドと同じメニュー内にある [Restart merge] コマンドも便利です。プル リクエストの初回作成後にターゲット ブランチが変更された場合にこれを実行すると、マージ コミットの新しいプレビューが作成され、マージ コミットの差分ビューが更新されます。

プル リクエストのステータス API とブランチ ポリシーによる統合

ブランチ ポリシー (英語) を使用すると、ブランチの品質を維持し、プル リクエストのワークフロー中にベスト プラクティスを反映することができます。今回、プル リクエストのステータス API とブランチ ポリシーを使用して、カスタム ツールをプル リクエストのワークフローに統合できるようになりました。ステータス API は、サードパーティ製の CI/CD ソリューションと統合する場合にも、独自の内部プロセス要件を適用する場合にも利用できます。マイクロソフトでは、各プル リクエスト前に、コードのビルドとテストを行う独自のプル リクエスト プロセスでこの機能を活用しています。詳しくはコード (英語)サンプル (英語)、またはこちらのドキュメント (英語) をご確認ください。

Stakeholder 権限で Analytics ウィジェットを表示

Analytics 拡張機能 (英語) をインストールすると、Cumulative Flow Diagram、Lead Time、Cycle Time、Velocity、Burndown、Burnup という 6 つの強力なウィジェットがウィジェット カタログに追加されます。今回から、無料の Stakeholder ライセンス (英語) ユーザーでもすべての Analytics ウィジェットを表示できるようになりました。

ただし、Analytics OData エンドポイント (英語)Analytics に接続した Power BI (英語) を使用するには、Basic ライセンスが必要です。

新しいビューで Power BI と VSTS Analytics を統合

VSTS Power BI Desktop Connector の既定のビューでは、VSTS データの作業をすぐに開始することができます。今回、一般的な履歴定義を含むビューが追加され、傾向分析やバグ分析を容易に実行できるようになりました。詳しくは Power BI Data Connector を使用した VSTS への接続 (英語) のガイダンスを参照してください。

Power BI Desktop の 2 月のリリースで実装されている、独自のビューを作成する機能を使用すると、Power BI の特定のデータを使用した作業がさらに容易になります。

VSTS のメッセージ拡張機能を使用して Microsoft Teams の作業項目を話し合う

Microsoft Teams は、複数のエンジニアリング チームの連携を実現するハブの役割を果たしています。今回、Microsoft Teams Integration に VSTS のメッセージ拡張機能が追加され、他のコンテンツやツールを表示したまま、特定の作業項目を検索したり、意見を交換したりできるようになりました。詳しくは、Marketplace で Microsoft Teams Integration (英語) の拡張機能を参照してください。

Area と Iteration の候補を使用して作業項目を移動

同じエリアやイテレーションで作業していると、作業項目を移動する際に階層を何度も参照する必要があります。今回より、[Area] および [Iteration] のパス コントロールに [Suggestions] として最近使用した値のリストが表示され、セットと移動先にすばやくアクセスできるようになりました。

また、作業項目の納期をすばやく確認できるよう [Iteration] の日付が名前の右側に追加されました。

Wiki 検索の一般提供を開始

12 月にパブリック プレビュー (英語) を開始した Wiki 検索が、一般提供されることになりました。この機能を使用すると、コードや作業項目を表示したまま、タイトルやコンテンツでお気に入りの Wiki ページを検索することができます。

グループを使用してユーザーのアクセスと拡張機能を大規模に管理

多くのユーザーを管理しやすくするために、AAD または VSTS グループにアクセス レベルと拡張機能を割り当てられるようになりました。適切なルールを設定したグループにユーザーを追加しておくと、そのユーザーが VSTS アカウントにアクセスするために必要なアクセス レベルと拡張機能が自動的に付与されます。これにより、アクセス レベルと拡張機能を個別に管理する必要がなくなります。

詳しくは、昨年の Microsoft DevOps Blog に掲載された大規模なアカウントにおけるユーザー管理のロードマップ (英語) の記事を参照してください。

Cloud Solution Provider 経由での購入が可能に

現在 Cloud Solution Provider (CSP) をサポートするすべての地域およびプランにおいて、CSP プログラム経由で Visual Studio Marketplace を利用できるようになりました。対象地域の CSP パートナーは、お客様に代わって Visual Studio Marketplace で Visual Studio サブスクリプション、Visual Studio Team Services ユーザー、ファーストパーティ製の拡張機能 (Test Manager、Hosted Pipelines、Package Management など) を購入することができます。Visual Studio Marketplace では今後、すべてのファーストパーティ製の拡張機能の購入について、Azure CSP サブスクリプションを受理します。また、CSP は、サブスクリプション管理ポータルでお客様用に購入した Visual Studio サブスクリプションを管理し、Azure ポータルで VSTS アカウントを設定できるほか、既存の VSTS アカウントを Azure CSP サブスクリプションにリンクして、お客様の請求処理を引き受けることができます。

今月の拡張機能: ブラウザー内のプル リクエストの競合を解決

昨年、マイクロソフトは Git Virtual File System (英語) を開発し、Windows のコード ベース全体を単一の Git リポジトリに移行しました。Windows チーム全体で Git を使用する場合に、ワークフローの競合を解決する必要があることが明らかになったため、プル リクエストの競合をブラウザーで直接解決できる VSTS の新しい拡張機能を開発し、今回、拡張機能 (英語) として VSTS Marketplace (英語) で一般公開します。

ターゲット ブランチとの競合は、Git のプル リクエストを完了する前にすべて解決する必要があります。この拡張機能を使用すると、マージや競合をローカル クローンで解決する代わりに、プル リクエストのマージの一環として Web 上で実行することができます。

この拡張機能を使用した (英語) 競合解決エクスペリエンスは以下のとおりです。

一覧のファイルをクリックすると、旧バージョンと新バージョンを同時に確認できるビューが表示され、保持したいコンテンツを選択することができます。

ファイルを統合して手動で編集することもできます。

まとめ

全機能の一覧についてはリリース ノートをご覧ください。VSTS に関する計画や開発の最新情報については、DevOps ブログ (英語) をご確認ください。

ではまた!

@tfsbuck