tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

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とか)が変わった場合にすぐに気づけるようにするためです。