2

次のビルド シナリオがあります。

プロジェクト C は、プロジェクト A に依存するプロジェクト B に依存します

プロジェクト X は C に依存し、プロジェクト Y は B に依存し、プロジェクト Z は A に依存します。

依存関係のある他の多くのモジュールがありますが、最も「複雑な」ビルド関係はプロジェクト X との関係です。Jenkins でこれを設定するには、「トリガーされたプロジェクトがビルドを完了するまでブロックする」オプションを使用して、パラメーター化されたトリガー プラグインを使用しました。ビルド可能な各モジュールは独自の Jenkins ジョブを取得し、プラグインは必要な依存ビルド ジョブをブロックするために使用されます。

このセットアップで 2 つの問題が発生しました。

  1. プロジェクト A と B は、プロジェクト X、Y、Z などの推移的な依存関係チェーンにあるため、何度もビルドされます。
  2. Jenkins は、ジョブ X、Y、Z などのビルドが (scm の変更によってトリガーされて) 利用可能なすべてのエグゼキューターをいっぱいにし、依存プロジェクトがビルド待ちのキューにあるため、プロジェクトのビルドが完全にブロックされることがあります。

このようなビルド環境用に Jenkins を構成する方法についてのアドバイスを探しています。私は Jenkins を初めて使用するので、この問題を解決するために利用できるオプションが正確にはわかりません。

編集:

すべてのジョブは、SCM の変更によってトリガーされます。依存プロジェクトは、パラメーター化されたトリガー プラグインによってもトリガーされます。「トリガーされたプロジェクトがビルドを完了するまでブロックする」オプション。

4

1 に答える 1

3

Jenkins には、ビルドをトリガーする複数の方法があります。最も一般的なのは、リポジトリの変更を監視することです。

ただし、別のジョブがビルドを完了した後にビルドを自動的にトリガーすることもできます。これはジェンキンスに組み込まれています。Build Triggersの下を見てチェックボックスを選択するBuild after other projects are builtか、Post-Build セクションでBuild Other Projects post-build action を選択します。また、ビルドに複数のトリガーを設定できるため、別のプロジェクトからの依存関係が変更された場合、またはソース ファイルが変更された場合にビルドが発生する可能性があります。

Maven または Ivy を使用する場合、プロジェクトが使用する Maven/Ivy jar 依存関係が変更された場合にビルドをトリガーするために使用できるプラグインがあります。

もう 1 つの便利なプラグインはCopy Artifacts Pluginです。これにより、ビルド アーティファクトをプロジェクト "X" からプロジェクト "Y" にコピーして、プロジェクト "Y" がビルドに使用できるようになります。

于 2013-03-15T19:12:49.270 に答える