4

問題: 多くの相互依存関係を持つ 20 の異なる Java プロジェクト。コードロック後にバグ修正があるたびに、変更されたアーティファクトに応じて、必要に応じて一連のアーティファクトをリリースする必要があります。たとえば、アーティファクト 3 にロック解除があり、バグ修正が必要な場合は、(maven リリース プラグインを使用して) プロジェクト 3、4、5、6、7、および 10 をリリースする必要があります (4、5、6、7、および 10 は3) に依存します。このタスクを完了するためにチーム間の調整を行うには時間がかかります。さらに、各アーティファクトの作成には 20 ~ 40 分かかります。

このプロセスを短縮したいと考えています。私たちは次のことを考えています。

  1. タイムスタンプ付きのアーティファクトのスナップショットを使用する
  2. jenkins ジョブとタグ svn を使用して、個々のアーティファクトをリポジトリに昇格させます。
  3. 依存関係を必要とするプロジェクトごとに、 mvn version:set コマンドを使用して依存関係を更新します。

上記と同様のソリューションを実装した人はいますか? もしそうなら、どのような問題に遭遇しましたか?

アーティファクトを再構築せず、ボタンをクリックするだけで 15 ~ 20 個のアーティファクトをリリースできるようにする他の提案は役に立ちます :)

4

1 に答える 1

2

残念ながら、pom ファイルを変更した場合は、アーティファクトを再構築する必要があります。そうしないと、VCS の状態は、作業中の状態を表していません。

例を挙げましょう。B が A に依存しているプロジェクト A、プロジェクト B:

プロジェクト A: pom.xml

   <version>1.0-SNAPSHOT</version>
   Some dependencies etc. 

プロジェクト B: pom.xml

   <version>1.0-SNAPSHOT</version>

   Some dependencies etc. 
   <dependency>
     <groupId>project.a</groupId>
     <artifactId>A</artifactId>
     <version>1.0-SNAPSHOT</version>
   </dependency>

ここで、プロジェクト A と B をビルドします。リポジトリの状態は、pom ファイルの状態と SNAPSHOT への状態/依存関係を表します。

ここで、プロジェクト A を変更してそこから「リリース」しますが、アーティファクトは再構築しません。以下はバージョン管理にあり、タグ付けを行っている可能性があります。

プロジェクト A: pom.xml

   <version>1.0</version>
   Some dependencies etc. 

次に、プロジェクト B で同じことを行います: プロジェクト B: pom.xml

   <version>1.0</version>

   Some dependencies etc. 
   <dependency>
     <groupId>project.a</groupId>
     <artifactId>A</artifactId>
     <version>1.0</version>
   </dependency>

しかし、アーティファクトも再構築しません。その結果、リポジトリには SNAPSHOT の状態を表すアーティファクトが含まれていますが、バージョン管理は別のことを言っています。これは、問題の非常に単純な例にすぎません。より多くのプロジェクトなどがある場合、事態は悪化します。

さらに、プロジェクト構造を変更することを考え直します。依存関係について書いたことに基づいて、それらのプロジェクトを一緒にリリースする必要があるように見えるので、それらからマルチモジュールビルドを作成することをお勧めします。

さらに、依存関係を処理できる Jenkins の適切なジョブを使用して再構築を行うことができます。または、ビルド パイプライン プラグインを使用してそのような処理を行うことを検討することもできます。

しかし、もう 1 つの疑問が頭に浮かびます。ビルドに時間がかかるのはなぜですか? 時間がかかっている理由を調査し、リリース時間を全体的に短縮することができます。

于 2012-11-20T07:37:57.743 に答える