Jenkins でリリース ジョブを設定しようとしています。ソース管理には Jenkins、Maven 3、Perforce を使用し、リポジトリ管理には Nexus を使用しています。
Maven ゴール release:prepare と release:perform を使用してジョブを設定しましたが、コンパイルとテストの両方が 2 回行われるため、ビルド時間が 2 倍になることに気付きました。maven-release-plugin の準備と実行の目標に関する私の現在の理解は次のとおりです。
maven-release-plugin 準備:
- ワークスペース内のファイルがローカルで変更されないようにする
- POM を編集してリリース バージョンを設定します
clean verify
コードをコンパイルしてテストに合格できるようにするためのデフォルトのprepareGoalsを実行します。- 変更された POM をコミットします
- VCS タグを作成します
- POM のバージョンを次の開発バージョンに増やし、これらの POM を VCS にコミットします
また、VCS タグとリリースおよび開発バージョン情報を含む release.properties ファイルが作成されます。
maven-release-plugin 実行
- VCS タグを使用して、ソース コードの新しいコピーを release.properties から target/checkout のデフォルトの場所にチェックアウトします。
- プロジェクトにディストリビューション管理があるかどうかに応じて
deploy
/の目標を実行しますdeploy-site
したがって、ビルド時間の倍増を防ぎ、ビルドの整合性を維持するために、次のことを考えています。
- jenkins チェックアウトをソース リポジトリからの最新ソース コードの新しいコピーにする
- リリース プラグインの preparesGoals 構成要素を次のように構成します。
clean deploy
- とにかく走れ
release:prepare
prepare
上記により、2 つの (とperform
) を 1 つのステップにマージして、ビルドの所要時間を節約できると思います。通常、1 つのスタック (Java 6 など) をターゲットとする 1 つのビルド環境でビルドするため、コードが準備段階で正常にコンパイルされ、テストに合格する限り、アーティファクトを Nexus にデプロイしても問題ありません。
私は主に、私の目が見えないものから救われるように、上記が間違っている可能性がある反対の考えを探しています.
ありがとう