5

私は Jenkins をよく使用し、クラスター上でさまざまなジョブを実行しています。時々、ジョブが不明瞭なエラーで失敗し、ジョブ A がアーティファクト X を使用しており、ジョブ B がその新しいバージョンをダウンロードまたはビルドしたばかりであるという事実にこれをデバッグすることができました (maven を使用)。 .

ジョブ A は java.lang.NoClassDefFoundError で失敗するか、ZIP ファイルが破損している、または Java が使用している ZIP 実装からの segfault で失敗します。

したがって、明らかな解決策は、ジョブにプライベートなローカル Maven リポジトリを使用することですが、これはかなりディスクとインターネットの費用がかかる解決策です。これは、各ジョブの maven がインターネット全体をダウンロードすることを意味します。

場合によっては、破損した JAR ファイルからクラス ファイルを熱心にロードすると、多くの場合、損傷を制限するのに役立ちますが、すべてに対してそうしたくはありません。

他の解決策はありますか?リポジトリのロックが改善されましたか?

4

1 に答える 1

4

はい、maven は単一のローカル リポジトリへの同時アクセスを好まないようです (最近、わずか 7 年前に開かれた問題があります)。各ジョブのリポジトリを作成すると、非常に大規模になる可能性があります。ただし、変数がある$EXECUTOR_NUMBERので、それを使用して、Jenkins executor ごとに Maven ローカル リポジトリを作成できます。

于 2013-10-07T08:33:43.150 に答える