2012年10月8日月曜日

Jenkinsで、WindowsPhoneのリリースビルド+ユニットテストを自動化


1.目的

Jenkinsを利用してプロジェクトのビルド、テストを自動化し素早い問題対応と、
常にビルド可能、実行可能なソリューションが存在する状態を作る。

そうすることで、チーム開発の進捗の管理や、モチベーション維持へと繋がる。

2.導入

今回はWindowsPhoneアプリのプロジェクトを、Jenkinsを使ってビルド、ユニットテストを
行う。Androidやその他のJava、あるいはスクリプト言語系のプロジェクトで導入の実績を
よく聞くJenkinsだが、.Netなフレームワークでもできるんだよ。

3.準備

3-1実行対象のプロジェクトを作る

作りましょう

3-2テストプロジェクトを作る

作り方は、僕の以前のPost


@okazuki さんの

http://d.hatena.ne.jp/okazuki/20110911/1315724390

を参考にしましょう。

3-3自動ビルド、ユニットテストの環境を作る


MsBuildの設定をします。基本的に、一個前のPost

http://numa08.blogspot.jp/2012/10/msbuildwindows-phone.html

を使えば良いです。

でも、今回はMsBuildのタスクを一部変更しました。Clean,Releaseはやりたかったので、そこを追加。

コードは以下。




3-4ビルドサーバー、リポジトリの準備


ビルドサーバーを準備します。

当然、Windowsじゃないとだめです。

VisualStudioを設定し、Jenkinsをインストール。GitやSuvbersionなどのバージョン管理システムも導入。

バージョン管理システムとして、Team Foundation Serverも利用できるっぽいですが未確認です。
(ちなみに、僕自身はSuvbersionも使ったこと無い)

3-5 csproj参照のパスに注意する

Global Assembly Cacheに登録していないアセンブリをプロジェクトの参照に追加する場合、

csproj(vbproj)の参照のパスの設定で、

対象のアセンブリが、ローカルな保存領域にある場合は相対パスで、

ネットワーク上にある場合は絶対パスで記述されるらしいです。

http://msdn.microsoft.com/ja-jp/library/ms998208.aspx

これを知らなくて詰んでた。

今回、テストプロジェクトの生成のために
"Microsoft.Silverlight.Testing.dll"
 と
 "Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll"

の少なくとも2つを追加しているわけですが、ビルドサーバーからこのファイルが見える状態になるように

設定する必要があるわけです。

僕の場合、いつもネットワークドライブ上にプロジェクトのフォルダを作って作業をしていたので、見事にこれがハマった。

csprojを任意に設定するか、ビルドサーバーからもアクセスできる場所にファイルを置くか、まあその辺設定しましょう。

3-7Jenkinsの設定をする
わりと、酢酸先生( @ch3cooh )のこの投稿が便利です。

http://d.hatena.ne.jp/ch3cooh393/20120126/1327510696

Jenkinsの管理->プラグインの管理 と進みJenkins MsBuild Plugin を探し、インストールします。

Jenkinsの管理->システムの管理->MsBuild の中で、MsBuildのパスの設定を行います。

ジョブの生成から、フリースタイルのプロジェクトを選んでリポジトリの設定を行います。

ビルドトリガの設定をしたら、ビルド手順を次のように設定します

Build a Visual Stduio Project or solution using MSBuild

MSBuild Build File $(WORDKSPACE)\(your project)\msbuild.proj

Command Line Arguments /t:Clean,Teset,Release

成果物の保存
**\Bin\Release\*.xap,**\EmulatorTestResult*.txt

以上で設定終わり。

最後に、ビルドサーバーでWindowsPhoneのエミュレーターを立ちあげておきましょう。

4.所感

エミュレーター重いわ!!

こんなに重いと思ってなかった。いつも、メインマシンでやってたからわからなかった・・・

WindowsPhoneの開発でだってJenkinsが使えるんだよっ!! ってことが伝えられればそれで良いんです。

0 件のコメント:

コメントを投稿