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はやりたかったので、そこを追加。
コードは以下。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8" ?> | |
<Project DefaultTargets="Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > | |
<UsingTask TaskName="MyMsBuildTask.RunWP7UnitTestsInEmulator" | |
AssemblyFile="MyMsBuildTask.dll"/> | |
<PropertyGroup> | |
<SourceFilesPath>$(MSBuildProjectDirectory)</SourceFilesPath> | |
</PropertyGroup> | |
<ItemGroup> | |
<Reference Include="Microsoft.Silverlight.Testing"> | |
<HintPath>$(MSBuildProjectDirectory)\ConfrimJenkins.Test\Libs\Microsoft.Silverlight.Testing.dll</HintPath> | |
</Reference> | |
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight"> | |
<HintPath>$(MSBuildProjectDirectory)\ConfrimJenkins.Test\Libs\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll</HintPath> | |
</Reference> | |
<SolutionItemsToBuild Include="$(SourceFilesPath)\**\*.sln" /> | |
</ItemGroup> | |
<Target Name="Build"> | |
<MSBuild Projects="%(SolutionItemsToBuild.Identity)" Targets="Build"/> | |
</Target> | |
<Target Name="Clean"> | |
<MSBuild Projects="%(SolutionItemsToBuild.Identity)" Targets="Clean" Properties="Configuration=Debug"/> | |
<MsBuild Projects="%(SolutionItemsToBuild.Identity)" Targets="Clean" Properties="Configuration=Release"/> | |
</Target> | |
<Target Name="Release"> | |
<MSBuild Projects="%(SolutionItemsToBuild.Identity)" Properties="Configuration=Release"/> | |
</Target> | |
<Target Name="Test" DependsOnTargets="Build"> | |
<RunWP7UnitTestsInEmulator NumberOfMilliSecondsToProcess="50000" | |
PathToUnitTestXapFile="$(SourceFilesPath)\ConfrimJenkins.Test\Bin\Debug\ConfrimJenkins.Test.xap" | |
ProductGuid="c7aea0a7-7178-4c31-b1da-2e0644c0c77a" /> | |
</Target> | |
</Project> |
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 件のコメント:
コメントを投稿