QtベースのC++プロジェクトのビルドサーバーを実装したいと考えています。サーバーは、Subversionから必要なコード/アセットをチェックアウトし、実行可能ファイルをビルドし、インストールプロジェクトのアーティファクトをアセンブルし、インストールメディアファイルをビルドする必要があります。ターゲットプラットフォームと(大まかな)ツールチェーンは次のとおりです。
つまり、少なくとも4つのビルドエージェント(32ビットと64ビットを同じボックスで実行できない場合はそれ以上)と7つの構成になります。オープンソースプロジェクトが推奨されますが、これは絶対的な要件ではありません。
私が見ているツールのほとんどは、Java(Jenkins、CruiseControlなど)または.Net(CruiseControl.netなど))に対応しているようです。これらはC++ツールチェーンで使用できます。 、または私は常にシステムと戦っていますか?過去に使用して見つけたものはQt/C++でうまく機能しますか?
私は Jenkins を使用して、qmake、cmake、およびmakefileに基づく多くのC++プロジェクトをビルドおよびパッケージ化します。
Cmake、qmake、msbuildには plugins がありますが、任意のコマンドラインスクリプトも実行できます。
私はJenkinsを使用してパッケージ化を問題なく実行しました。これは、プロジェクトのコマンドラインのステップの1つにすぎません。
コンパイラによって生成された 警告/エラー の数を監視するための優れたプラグインがあります(私は通常GCCを使用します)。
また、コンパイラフラグ、プリプロセッサ変数、プラットフォームなどのさまざまな組み合わせでプロジェクトを複数回ビルドできるマトリックスビルドもあります。私が設定したプロジェクトの1つは、2つのプラットフォームで5つのブールプリプロセッサフラグを使用したマトリックスビルドです。 2 ^ 6 = 64ビルドします。これらを修正するには、設定に少し時間がかかる場合があります。
ここで簡単な例を読むことができます:
ハドソン、ジェンキンス、ビルボットは試してみる価値があると思います。 1日か2日無駄に評価し、簡単な例で試してみると、自信を持って選択することができます。
私が見ているツールのほとんどは、Java(Jenkins、CruiseControlなど)または.Net(CruiseControl.netなど))に対応しているようです。これらはC++ツールチェーンで使用できます。 、または私は常にシステムと戦っていますか?過去に使用して見つけたものはQt/C++でうまく機能しますか?
適度に機能するCIシステムには、ビルドコマンドに必要なプログラムを実行できる部分があります。
これが私が検討することです:
私はCruiseControlを使用して上記を実行しましたが、ほとんどのことは非常に簡単でした。私はすべてをmakeまたはqmakeで記述し、実行する必要のあるコマンドを呼び出すだけでした。単体テストとコードカバレッジの統合のために、XMLに出力し、CruiseControlでサポートされるものに変換しました。
私の推奨では、推奨されるCIシステムを見て、上記の基準に基づいてそれらを調べます。
これには buildbot を使用しています。使用して4年になりますが、とても満足しています。
これはpythonで書かれたアプリケーションで、サーバー上で実行され、さまざまなOS上の複数のクライアントを管理できます。現在、Windows XP、Windows 7、Debian、Ubuntu、CentOSビルドスレーブを使用しています。私のプロジェクトはC++であり、そのうちの1つ(エンドユーザーGUI)はPythonで作成されています。しかし、GUI以外の機能のために、他のフレームワークとも統合しました。
Buildbotの本当に良いところは、スレーブでコマンドラインを実行することで機能することです。これにより、あなたは何でも好きなことができます。 WindowsシステムでもVisualStudioを使用してコンパイルできます!これらのコマンドラインから、すべての出力をサーバーに集中させてアクセスできます。
また、これらの多くを参照するこの site の代替案を見つけることができます。 免責事項:3年前に見ましたが、それでも正確かどうかはわかりません。
ハドソンまたはジェンキンスはかなり良いです。