2

Jenkins で Maven ビルド ジョブをセットアップしており、次の注目すべき設定があります。

- It is a multi-module job with 75 modules
- It is built incrementally (build only changed modules)
- Automatic artifact archiving is disabled

ビルド時間は約 20 分です。ただし、ある時点から、ビルド時間は 1 時間 15 分に大幅に増加しました。ジョブはまだ段階的に構築されており、現在のビルド番号は約 1450 です。私は 3 つの古いビルドのみを保持しています。私の質問は、ビルド時間の増分がこれほど高いのはなぜですか?

私が試して観察したことは次のとおりです。

Maven ジョブはデフォルトでフィンガープリントを作成します。多数のビルド (現在は 1450) では、ビルド中にアクセスされる巨大な指紋データが存在する可能性があり、そのため全体のビルド時間が長くなります。ただし、既存のフィンガープリントをすべてクリーンアップし、プロジェクトの再構築を試みました。これはビルド時間に影響を与えませんでした (完了するまでに 1 時間かかりました)。

ビルドするモジュールの特定に多くの時間が費やされているかどうかを知るために、インクリメンタル ビルドの代わりにフル ビルドを試みました。これも役に立たず、完全なビルドは 1 時間 20 分で完了しました。

問題がリソースの可用性に起因する場合に備えて、専用のスレーブでジョブを構築することも試みました。これはビルド時間には影響しませんでした。

機能した唯一のことは、ジョブ自体の名前を変更することでした。名前を変更した後、ビルドは約 20 分で再び完了します。しかし、これが理想的な解決策であるかどうかはわかりません。また、ジョブの名前を変更するこのアプローチの背後にあるロジックがわかりません。

多数のビルドの後にビルド時間を増やすために Maven ビルド内で何が起こっているかについて、誰かが提案できますか? Jenkins v1.560 と maven プロジェクト プラグイン v2.0 を使用しています。Maven プラグインまたは Jenkins をアップグレードすることは、現在私にとって選択肢ではありません。

更新 1

ビルド出力の分析によると、主要なビルド時間は「POM の解析」(約 30 分) と「メタデータの収集」ステップ (約 20 分) に費やされています。これらの2つのステップで正確に何が起こるかについて、誰か知っていますか?

4

0 に答える 0