私は現在、主に大規模な C++ プロジェクトの継続的統合に jenkins/hudson を使用しています。トランクとブランチごとに個別のプロジェクトがあります。また、Java コードに関連するプロジェクトがいくつかありますが、それらのセットアップは現時点ではかなり基本的なものです (ただし、後でさらに多くのことを行う可能性があります)。C++ プロジェクトは次のことを行います。
- 再構成するか、クリーン ビルドを実行するか、または新しいチェックアウトを使用するかのオプションを使用してすべてをビルドします
- オプションで、すべてのテストをビルドして実行します
- オプションで、Valgrind の memcheck を使用してすべてのテストを実行します
- cppcheck を実行します
- doxygen ドキュメントを生成します
- レポートの公開: 単体テスト、valgrind、cppcheck、コンパイラ警告、SLOC、オープン タスク、およびコード カバレッジ (gcov、gcovr、および cobertura プラグインを使用)
- コードを夜間またはオンデマンドでテスト環境とパッケージ リポジトリにデプロイします
自動ビルドではすべてが構成可能で、オンデマンド ビルドではオプションです。その下には、これらの多くを制御する bash スクリプトがあります。これは、カスタム bash スクリプトと共に automake と autoconf を使用するビルド システムにさらに依存しています。
私たちは (当時) Hudson を使い始めました。これは、Java 関係者が使用していたものであり、夜間のビルドが必要だったからです。それ以来、私たちはさらに多くを追加し、さらに追加し続けています。いくつかの点でハドソンは素晴らしいですが、確かに理想的ではありません。
私は他のソリューションを見てきましたが、代わりになる可能性があると思われる唯一のソリューションはbuildbotです。この状況では buildbot の方が適しているでしょうか? すでに Hudson を使用しているため、投資する価値はありますか? なんで?
編集: Hudson/Jenkins が理想的であるとは思えない理由を誰かが尋ねました。簡単な答えは、すべてを改善できるということです。Jenkins が私のユースケースに最適な現在のソリューションなのか、それとも新しい要件が発生したとしても長期的に維持しやすい何か (buildbot?) があるのか どうか疑問に思っています。