1

プロジェクト間の依存関係の適切な DAG (直接非巡回グラフ) をサポートする CI サーバー (CruiseControl、Jenkins、Hudson など) はありますか? あれは:

共通のライブラリ プロジェクト A、2 つのユーティリティ ライブラリ プロジェクト B と C があり、どちらも A を使用しているが、互いに独立しているとします。また、B と C の両方を使用するプログラム プロジェクト D があるとします。 )、B が A に依存し、C が A に依存し、D が B と C の両方に依存することを指定するのは自明です。

誰かが B または C にコミットすると、CC.rb はそれをビルドし、次に D をビルドします。しかし、誰かが A にコミットすると、CC.rb は A をビルドし、次に B と C の両方を並行してビルドします。ただし、B が最初にビルドを完了するとします。この時点で、CC.rb は熱心に D のビルドを開始しますが、これは失敗する可能性が高く、とにかく時間の無駄です。なぜなら、C のビルドが完了すると、CC.rb が D を再度ビルドするためです (これがビルドです)。私たちは実際に望んでいます)。

この動作が CC.rb に固有のものではないことは理解しています。CIサーバーが一度に1つのプロジェクトのみの依存関係を考慮する場合、それは固有のようです。私が探しているのは、D が B と C の両方に依存していると判断できるほどスマートな CI サーバーであり、両方が同じバージョンの A でビルドを完了するまでビルドを延期します。つまり、CI サーバーです。これは、各プロジェクトが 1 つの make アクションである場合に "make -j" が行うことと同様に機能します。

そのような獣はいますか?

4

1 に答える 1

1

少なくとも Jenkins では、ジョブ (またはプロジェクトと呼びたい場合はプロジェクト) は、すぐに使用できるさまざまな方法で、特にプラグインを使用して、他のジョブをトリガーできます。どうやらここで関連性があり、異なるジョブのビルドを「結合」して、2 つの異なるジョブが完了した後に 3 番目のジョブがトリガーされるようにすることができます。

あなたが説明したシステムは、Jenkins (および Hudson でも、まだ大きな違いはありません) で非常に簡単に構築できると思います。

于 2012-10-21T15:04:02.970 に答える