[アーカイブ] Team Foundation Service でクラウドとオンプレミス上のビルドサービスでCI環境を構築する (Windows ストアアプリの自動ビルド設定紹介つき)

<オリジナル投稿 2012年10月16日 本ポストの情報はオリジナル投稿時点のものです。マイクロソフトの正式な見解や製品の仕様を保証するものではないことをご了承ください。>

Team Foundation Service は、現在、Team Foundation Service Preview として無償でお試しいただける Team Foundation Server の Azure 上の実装です (a.k.a. TFS on Azure)。ソースコードのバージョン管理、作業項目 (要求、タスク、バグ、テストケース、懸案事項など) の追跡管理、自動ビルドとビルド管理、これらのトレーサビリティを有機的に構築、追跡が行えますので、ぜひ使ってみてください。

クラウド上でのビルドサービス

さて、自動ビルドもクラウド上で行うことができます。この情報は、Visual Studio 2012 からだと [ビルド]:[ビルドコントローラーの管理] で見ることができます。
image
このように、Hosted Build Controller と Hosted Build Agent があることがわかります。これが Azure 上のビルドサーバー上に配置され、ビルド要求があった際に、自動的にアクティブになり、自動ビルドが走ります。したがって、継続的インテグレーションの設定 (ビルド定義単位で、チェックボックス一発で設定) をすると、チェックインを行うたびに、このビルドエージェントがアクティブになり、ビルドがクラウド上で行われます。
※現時点の制限としては、このビルドサーバーが、Windows Server 2008 R2 (たぶん) ベースであるため、Windowsストア アプリの自動ビルドとテスト, UI を伴うテスト (Coded UI Test: コード化された UI テスト) は行えません。
ビルド実行中には、Hosted Build のサービスは、「実行中」になります。
image
ちなみに、ビルド成果物のステージング場所 (ドロップ場所) としては、 TFS 2012 から UNC パス (共有フォルダ) だけではなく、「格納しない」、「バージョン管理フォルダ」の選択肢が増えています。
たとえば、「格納しない」ならば、継続的インテグレーション (CI) のようにできるだけ早くに結果を知りたい場合 (かつ、ビルド成果物の二次利用はしない場合) にビルド時間を短縮することができますので有効です。「バージョン管理フォルダ」は、TFSにアクセスできる人が誰でもビルド成果物にアクセスできますし、Team Foundation Service のように、クラウド上のリポジトリを使う場合には、特に有効です。
image

オンプレミスでのビルドサービス

では、Team Foundation Service を使ってのビルドでは、先述の制限でしか使えないものかというとそうでもありません。実は、オンプレミスにあるビルドサービスをキックすることができます。設定から見ていきましょう。
まず、オンプレミスのビルドサーバー上で、TFS 2012 (Team Foundation Server 2012) のセットアップをします。この時にセットするのは、ビルドサービスのみです。
image
チーム プロジェクト コレクションの設定を求められるので、Team Foundation Service Preview にあるチーム プロジェクト コレクションを選択します。
image
image
ビルドエージェントのインスタンス数を聞いてきます。既定でそのマシンのスペックに応じた数が設定されますので、特に問題なければ既定のままでOKです。
image
次に、ビルドサービスを実行するアカウントを設定します。ここで注意が必要です。通常の設定では、NETWORK SERVICE でもいいのですが、「UI を伴うテストを行う」、「Windows ストア アプリのビルドとテストを行う」場合は、明示的にアカウントを設定する必要があります。そのアカウントに、これらを行う権限と環境がないといけないということです。簡単に書くと、

UI を伴うテスト: 対話型モードでビルドサービスを起動できること
Windows ストア アプリ: 開発者ライセンスが付与されていること

image
設定に問題がないかは、事前検証で確認できます。
image
問題なければ、[構成]ボタンで構成するだけです。簡単ですね。
image

クラウドとオンプレミスのビルドサービスの併用が可能

さて、ビルドコントローラーの状態を確認してみましょうか。
image
はい。このように、Azure 上の Hosted Build と オンプレミス上のビルドサービスが表示されます。

クラウドとオンプレミスのビルドサービスの使い分け

ビルド定義には、予め規定で利用するビルドコントローラーをセットしておくことができます。
image
したがってこの設定を切り替えることで、クラウドとオンプレミスを使い分けることができます。
ただ、ビルド定義は権限がないと編集できません (当たり前ですね)。実はビルドキック時にも設定することができます。
image
したがって、ビルド実行時に切り替えることも可能です。

Windows ストア アプリの自動ビルド

さて、ここまでくれば、現時点での Taem Foundation Service Preview のHosted Build の制限である、UI を伴うテストや、Windows ストア アプリのビルドとテストも自動化できます。ここでは、Windows ストア アプリの自動ビルドについて書きましょう。
Windows ストア アプリのビルドとテストは、Windows 8 環境でないと行えません。なおかつ、その端末での開発者ライセンスの取得が必要となります。また、当然ですが、ビルド、そしてテストに必要な Visual Studio 2012 のエディションがインストールされている必要があります。
さて、ここではその先のステップを。
まず、Windows ストア アプリにおいて、パッケージ化を行うための署名キーを設定する必要があります。といっても手順はとても簡単。
[プロジェクト]:[ストア]>[アプリ パッケージの作成]をクリックします。
そう、ストアにあげるためのパッケージの作成で使うアレです。ただし、今回はストアにあげるわけではないので、「いいえ」を選択します。あとは、説明の必要ないですね。ってことで省略w
これだけやってあげれば、通常の自動ビルドのプロセスにて Windows ストア アプリの自動ビルドが行えます。
ちなみに、この署名キーを設定していない場合は、自動ビルド時に下記のようなエラーとなります。
image
自動ビルドが成功している場合は、
image
このあたりの設定の詳細は、もちろん MSDN ライブラリにて公開されています。

Team Foundation ビルドを使用した Windows ストア アプリのビルドとテスト

ちなみに、ここでビルドをしている Windows ストア アプリは、

長沢のセッション資料を閲覧できるアプリが Windows ストアで公開

ですw

ブラウザから自動ビルドをキック

さて、TFS 2012, Team Foundation Service Preview では、TFS Web Access (Web ブラウザ) からも自動ビルドをキックすることができます。
クラウド上のビルドサービスは、もちろんのこと、なんと!オンプレミスのビルドサービスもキックできます。
ビルドのキック方法は、Visual Studio からと同様です。まっ、CI にしていれば自らビルドをキックすることもほとんどないわけですが・・・。地味ですが、かなり便利です。
image

まとめ

私の Windows ストア アプリ開発は、Team Foundation Service Preview でやっています。ちゃんと継続的インテグレーションしてるんですよ。プロダクトバックログ項目からタスク、そしてソースコードとトレースができ、さらに、ビルドともトレースがとれています。そして、プロダクトバックログ項目からテストケース、テストケースと関連するテスト結果とバグ、バグ修正と関連するソースコードとライフサイクル全般のトレーサビリティが Team Foundation Service Preview でとれてしまういい時代です。使わないと持ったないですね。今なら Preview ですので、無償でお試しいただけます。
Windows ストア アプリの手動テストについては以前に

Windows 8 の手動テストをリモートの実機で行う方法

で書きました。
先ほど書いたもう一つの記事も関連しています。気軽にプライベートビルドを行う方法です。

TFS でバディビルド (プライベートビルド) を行うたった一つの設定

Team Foundation Server 2012 も、Team Foundation Service Preview ももうここまで進化しています。これらの環境をすでにみなさんは適切なコストで利用することができます。これらがやってくれることにいつまでみなさんの貴重な時間と労力を割きますか?その余裕は本当にありますか?