次のビルド シナリオがあります。
プロジェクト C は、プロジェクト A に依存するプロジェクト B に依存します
プロジェクト X は C に依存し、プロジェクト Y は B に依存し、プロジェクト Z は A に依存します。
依存関係のある他の多くのモジュールがありますが、最も「複雑な」ビルド関係はプロジェクト X との関係です。Jenkins でこれを設定するには、「トリガーされたプロジェクトがビルドを完了するまでブロックする」オプションを使用して、パラメーター化されたトリガー プラグインを使用しました。ビルド可能な各モジュールは独自の Jenkins ジョブを取得し、プラグインは必要な依存ビルド ジョブをブロックするために使用されます。
このセットアップで 2 つの問題が発生しました。
- プロジェクト A と B は、プロジェクト X、Y、Z などの推移的な依存関係チェーンにあるため、何度もビルドされます。
- Jenkins は、ジョブ X、Y、Z などのビルドが (scm の変更によってトリガーされて) 利用可能なすべてのエグゼキューターをいっぱいにし、依存プロジェクトがビルド待ちのキューにあるため、プロジェクトのビルドが完全にブロックされることがあります。
このようなビルド環境用に Jenkins を構成する方法についてのアドバイスを探しています。私は Jenkins を初めて使用するので、この問題を解決するために利用できるオプションが正確にはわかりません。
編集:
すべてのジョブは、SCM の変更によってトリガーされます。依存プロジェクトは、パラメーター化されたトリガー プラグインによってもトリガーされます。「トリガーされたプロジェクトがビルドを完了するまでブロックする」オプション。