継続的結合

最近、C#のプログラムを作成する機会があったので、N*でやってみた。
CruiseControlとCCTrayの組み合わせ、いいですね。はまります(なんと言っても楽しくなります)。

でも、普段のメインはWindows(MFCアプリケーション)でcppUnitなので、CruiseControlに乗せられない(と勝手に思っている)。どうしようかなぁ?と考えてみた(出来るだけ手間暇かけないで)。

  1. XPのタスクスケジューリングを使う
  2. 現状Releaseビルド版ではcppUnitxmlでの結果出力を使っているので、この仕組みをそのまま使う。
  3. Unitテストに失敗したら開発関係者に知らせる

で、バッチファイルと簡単なプログラムを使ってそれっぽく実現してみた。

  • VSS(VisualSourceSafe)から対象プロジェクトを取得
    • "set csdir=hoge"でデータベースを指定
    • "SS Get $hoge -R -I-"で最新ソースを全て取得
  • VisualStudioでビルドする
    • "devenv /build Release hoge.sln"でReleaseターゲットでビルド
  • cppUnitテストを実行
  • 結果xmlファイルにエラー表記があれば、"net send"を使って強制的にメッセージを送信する
    • ここは自作のプログラムで実現

格好悪いけど、何となく継続的結合(でもビルド時のエラーは検知できてないことに気づいた...orz)。