個人的には、CruiseControlとCruiseControl.Netのみを使用したことがあります。この理由は経済学に関係しています。それらは適度に安定しており、一度セットアップすれば、それを維持するために必要なことはほとんどありません。通常、ユーザーコミュニティは非常に役立ち、ニーズに合わせて拡張できます。
とはいえ、私が知っている商用製品がいくつかあります(1つはJetBrains、もう1つはAtlassian)が、より良いセットアップエクスペリエンスと商用サポートを提供します。私はこれらの製品を試すつもりでしたが、実際にはまだチャンスがありませんでした。
CIツールは、インタープリター言語よりもコンパイルされた言語で重要な役割を果たしますが、それは、CIツールがインタープリター言語で無駄になっているということではありません。相互に依存する複数のプロジェクトがあり、変更が誤って依存関係を壊さないようにしたい場合-CIツールは非常に貴重です。
CIツールを使用すると、次の3つのクラスの問題を把握できます。
- コンパイルエラー-クラスのシグネチャが依存関係を壊すような方法で変更された場合、成果物の放棄時間前にそれについて知ることが最善です。
- 論理エラー-クラスの動作が依存関係を壊すように変化した場合、早期に知ることが最善です。これは、ある種の自動テスト、最も一般的な単体テストで確認する必要があります。
- 受け入れテスト-最終製品で実行するテストの自動スイートがある場合、頻繁に実行するのが最善です。
解釈された言語はコンパイルされないため、キャッチするコンパイルエラーはありません。ただし、他の2つの問題はよくあることなので、CIツールはRuby / Python / Perl /などのプロジェクトに役立ちます。
論理エラーと受け入れテストポイントの両方のキーワードは、「自動化された」テストです。マシンで実行できる一連のテストがない場合、CIツールの大きな利点が失われています。時間の経過とともに自動化されたスイートを構築できるため、小規模で開始できます。
編集
多数のCIツールの機能比較については、この素敵なグラフを参照してください(その多くについては知りませんでした)。
http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix