ツール:
ジェンキンス版。1.470
Maven 2
サブバージョン
環境
私のビルドに多数のプロジェクト AD があるとします。依存関係グラフは次のように存在します。つまり、B は A のクラスに依存し、C は B のクラスに依存し、D は A のクラスに依存します。ビルド後のアクションとして依存するビルドを呼び出すようにジェンキンス ビルドを作成します。
A
|--> B --> C
|--> D
毎晩、Jenkins で完全なビルドをトリガーします (A ビルド、B のトリガー (C のトリガー)、D のトリガー)。これは、A に毎晩ビルドするように指示するだけで簡単に実行でき、残りはカスケードします。
問題
ただし、コミットでは、一度コミットされたプロジェクトをビルドしたいと考えています。
状況 1 : リポジトリをポーリングし (またはコミット フックを使用しても違いはありません)、B へのコミットがあったことを確認すると、B がビルドされ、C がビルドされます。 成功!
状況 2 : リポジトリをポーリングし、B と C が 1 つのコミットでコミットされていることを確認すると、Jenkins は B のビルド (C のビルドのトリガー) と C のビルド (2 番目のビルド) を試みます。失敗。どうなるか見てみ?C は 2 回ビルドされ、貴重なビルド時間が費やされました。 ビルドを高速に保ちます。
コミットされた各ビルド パイプラインで最上位のプロジェクトのみをトリガーする方法を知っている人はいますか?
1つの解決策は、各パイプラインで最高のプロジェクトを決定する複雑なSVNフックになると思います...
- 状況 3 : 1 回のコミットで BC と D にコミットします。SVN フックは、C が B に依存していることを検出します。フックは、プロジェクト固有のリンクを呼び出して、B と D のビルドを開始します。
落とし穴: 非常に複雑な SVN コミット フック。SVN フックでパイプラインを維持する必要があります。
これは他の人が遭遇した問題だと思います。これに役立つ Jenkins プラグインはありますか?