CruiseControl.Net Part.2
以前、ちょっと書いたのですが、ccnet.config をちょっと見直してもう少し使いやすくなりました。こんな感じ。
<cruisecontrol> <!-- This is your CruiseControl.NET Server Configuration file. Add your projects below! --> <project name="Project1" > <triggers> <scheduleTrigger time="09:10" buildCondition="ForceBuild" name="Scheduled" /> <scheduleTrigger time="12:10" buildCondition="ForceBuild" name="Scheduled" /> <scheduleTrigger time="15:10" buildCondition="ForceBuild" name="Scheduled" /> <intervalTrigger /> </triggers> <sourcecontrol type="svn"> <executable>C:\TracLight\subversion\bin\svn.exe</executable> <trunkUrl>http://localhost/svn/Project1/PROJECT1/trunk/</trunkUrl> <workingDirectory>c:\dev\ccnet\Project1</workingDirectory> <username>admin</username> <password>admin</password> <autoGetSource>true</autoGetSource> </sourcecontrol> <tasks> <devenv solutionfile="c:\dev\ccnet\Project1\PROJECT1.sln" configuration="debug" /> <nunit path="C:\Program Files\NUnit 2.4.7\bin\nunit-console.exe"> <assemblies> <assembly>c:\dev\ccnet\Project1\Project1Test\bin\Release\Project1Test.dll</assembly> <assembly>c:\dev\ccnet\Project1\Project1UtilTest\bin\Release\Project1UtilTest.dll</assembly> </assemblies> </nunit> </tasks> </project> <project name="Project2" > <triggers> <scheduleTrigger time="09:10" buildCondition="ForceBuild" name="Scheduled" /> <scheduleTrigger time="12:10" buildCondition="ForceBuild" name="Scheduled" /> <scheduleTrigger time="15:10" buildCondition="ForceBuild" name="Scheduled" /> <intervalTrigger /> </triggers> <sourcecontrol type="svn"> <executable>C:\TracLight\subversion\bin\svn.exe</executable> <trunkUrl>http://localhost/svn/Project2/project_2/trunk/</trunkUrl> <workingDirectory>c:\dev\ccnet\Project2</workingDirectory> <username>admin</username> <password>admin</password> <autoGetSource>true</autoGetSource> </sourcecontrol> <tasks> <devenv solutionfile="c:\dev\ccnet\Project2\project_2.sln" configuration="debug" /> <nunit path="C:\Program Files\NUnit 2.4.7\bin\nunit-console.exe"> <assemblies> <assembly>c:\dev\ccnet\Project2\project_2_test\bin\Release\project_2_test.dll</assembly> </assemblies> </nunit> </tasks> </project> </cruisecontrol>
違いは、trigger。
<triggers> <scheduleTrigger time="09:10" buildCondition="ForceBuild" name="Scheduled" /> <scheduleTrigger time="12:10" buildCondition="ForceBuild" name="Scheduled" /> <scheduleTrigger time="15:10" buildCondition="ForceBuild" name="Scheduled" /> <intervalTrigger /> </triggers>
scheduleTrigger で、(修正があってもなくても)9:10, 12:10, 15:10 にビルドして、テスト。で、intervalTrigger で subversion のリポジトリを定期的にチェックして、更新があればビルドして、テストします。
scheduleTrigger で定期的にチェックするのは、コードが変わらなくてもサーバの環境(ネットワークの設定とかユーザアカウントとかDBとか)が変わった場合にすぐに気づけるようにするためです。