とある方から「Windows Phoneでも自動ビルドとか自動テストとかできますか~?」と聞かれ、「できます」と返答させて頂いたのですが、ちょっと気になって実際に確認してみました。
自動ビルドについては、「準備する環境に条件がある」だけでした。
○確認環境について
・ワークグループ環境
AD環境でもあまり内容は変わりません。
・ビルドサービス用アカウントを別途作成
今回は「DTFSBuild」というユーザを作成しています。
権限はUsersで問題ありません。
・TFSサーバは構築済
・プロジェクトコレクションのビルドサービスアカウントにビルドサービス用アカウント(今回はDTFSBuild)を追加
○OS/SDKのインストール
まず、ビルドするためにはビルド環境にSDKをインストールする必要がありますが、SDKのサポートOSはWindows VistaとWindows 7ですので、サーバ系OSは使えません。
TFSはクライアントOSにもインストール可能ですのでWindows7環境を作成します。
ここがこのネタの最大のポイントになるのですが、必ず「32bit環境」で作成
してください。
Windows Phone7ネタというよりかはSilverlightネタになるのですが、「64bit版のMSBuildではSilverlightプロジェクトがビルドできない」という問題があります。
※Visual Studio Engineering Teamのブログに64bit版MSBuildでのネタが掲載されています。
64bit版Windows7でビルド環境を構築し、ビルドを実行すると、こんな感じでエラーになります。
自分はこの原因がすぐにわからず、結構な時間ハマってました。orz
次に、現時点でのWindows Phone SDKの最新版である7.1をインストールします。
また、ビルド生成物の出力/共有フォルダを作成しておきます。
→とりあえずなら共有フォルダ/ローカルセキュリティともに「Everyone:フルコントロール」でOKです。
○TFSのインストール/ビルド構成
TFS本体のサーバは構築済の前提とし、ビルドサーバのみ構築しますので、インストールする機能を「Team Foundation ビルド サービス」のみ選択してインストールします。
インストールした後は構成ウィザードに従ってビルドサービスを構成します。
「ビルドコンピュータの構成」でビルドサービスを実行するユーザとして「DTFSBuild」を指定します。
○TFSチームプロジェクトの作成/Windows Phone7プロジェクトの作成/Windows Phone7プロジェクトの登録
これらは普通に行ってください。
○ビルド定義の作成
基本的には普通に作成しますが、他のビルドエージェントで実行されないように、エージエントを固定します。
ビルド定義の「プロセス」-「エージェントの設定」-「名前フィルター」に、Windows7環境のエージェント名を指定します。
(通常は「[コンピュータ名] – エージェント1」という名前になります)
これで、チームエクスプローラーとかから普通にビルドを実行できるようになります。