1

Jenkins CIシステムを初めてセットアップするときに、スナップショットの依存関係とローカルのMavenリポジトリをどのように処理するのか疑問に思います。

依存関係Yを持つアーティファクトXがあります。Jenkinsは、YがコミットするたびにXをビルドするように構成されています。

戦略A(ワークスペースMavenリポジトリー):
ローカルMavenリポジトリーは「ワークスペースに対してローカル」になるように構成されています。これは、ビルドされたすべてのジョブに独自のリポジトリがあることを意味します。Yのコミットはビルド(「mvnclean install」)をトリガーしますが、ビルドXとYのリポジトリーは分離されているため、Xは最後のコミットではなく最後にデプロイされたバージョンのYを使用します。
この戦略を使用すると、すべての依存関係もデプロイされているかどうかを検出するのに役立つように見えますが、統合の問題は検出されません(Yコミットが壊れてXが壊れます)。

戦略B(共通のMavenリポジトリ):
Jenkinsは共通のローカルMavenリポジトリを使用します。(壊れた)Yスナップショットのコミットは、現在のYスナップショットを使用するXのビルドをトリガーし、統合の問題が検出されます。欠点は、すべてのビルド依存関係が中央スナップショットリポジトリにデプロイされているかどうかを検出しないことです(CIシステムではすべてがローカルリポジトリにインストールされているため)。

AとBの両方の利点を組み合わせた戦略はありますか?

4

1 に答える 1

2

このために戦略Cを使用することになりました。

ストラテジーC(Jenkinsにデプロイさせる):
すべてのジョブには、ストラテジーAと同様に、ワークスペースに対してローカルのローカルリポジトリがあります。ただし、デフォルトの「クリーンインストール」目標の代わりに、Jenkinsはすべてのジョブで「-Uクリーンデプロイ」を実行するように構成されています。したがって、Yが壊れてコミットされた場合、JenkinsはYをビルドし、中央のスナップショットリポジトリにデプロイします。Jenkinsは依存関係Yのビルドを検出し、最新のYスナップショットを使用してXをビルドします。
この戦略に役立つのは、少なくともMaven 3では、タイムスタンプ付きのスナップショットが多数あるため、中央のスナップショットリポジトリで自動クリーンアップジョブを実行することです。

于 2012-09-12T06:59:40.597 に答える