私はJenkins 1.462を使用しており、mavenバージョンは3.0.4です。ジェンキンスで はIチェックボックスを有効にし、「インクリメンタルビルド - のみ変更されたモジュールをビルド」私は2つの質問を理解したいJenkinsのインクリメンタルビルド
を:インクリメンタルビルドが十分であるかどうか
を? ここではHow do I trigger a Jenkins build of a single module in a multi-module Maven build from Subversion?は100%で動作しないと記載されています ここではhttp://www.slideshare.net/andrewbayer/7-habits-of-highly-effective-jenkins-usersは19ページで、インクリメンタルビルドはフルビルドで補完的であり、補充ではありません。
増分ビルドのみ変更されたモジュールを変更しましたは実際には期待通りに動作しますか? これはどういう意味ですか?モジュールA、B、X、C、Dを持つ場合、XはAとBを使用し、CはXを使用し、DはCを使用し、Xモジュールを変更します。モジュールX(itslef)、C(Xを直接使用する)、D(推移閉包、DはCを使用するC)を再コンパイルしたい。
注:これは増分ビルドを有効にするために行った唯一の変更です。
提案された解決策は、非常に深刻な問題を引き起こします。ジェンキンスで "mvn install"を使用すると、ビルドマシンが1台以上ある場合や1つ以上のブランチをビルドすると予期しない動作が発生します。一般的に言えば、ビルドマシンの状態に決して依存してはいけません。なぜなら、 "mvn install"は非常に危険なアイデアなのです。相互依存関係がある場合、リポジトリマネージャを使用し、必要に応じて依存バージョンを更新します(バージョンを上書きしないと、再現性が失われます)。 – marcv81
こんにちはmarcv81、mvn installは必ずビルドマシンの状態に依存しません。リリースにMavenを使用している場合は、中央リポジトリを使用してアーティファクトをプッシュしてプルする必要があります。どのような場合でも、Mavenにいくつかのオプションがある依存関係管理ではなく、ビルドのスピードアップに関する質問があれば、他のターゲットのインストールを置き換えることができます。 –
こんにちはAdrian、mvn installは、ローカルリポジトリに成果物をインストールするので、ビルドマシンの状態をデフォルトで変更します。これは、現在のビルドに依存している次のビルドの結果に影響します。質問はパフォーマンスに関するものですが、答えが壊れて再現性が損なわれるので、私のdownvote/comment。アーティファクト・リポジトリを使って言及しました。これを正しく実装するには、ビルドごとに新しいVMをスピンアップすることをお勧めします。貧乏人のバージョンは、すべてのビルドの前にrm -rf〜/ .m2/repositoryにあります。 – marcv81