1

にいくつかのMavenの成果物を管理する。これは、によって、プログラミングの質問ではなく、配信パイプラインの質問:配信パイプライン

当社の製品は、日常にスナップショットを解放し、いくつかのMavenアーティファクト、(2.0.1-SNAPSHOT)で構築されています(2.0.1)を毎週発行しています。 開発中、私たちの成果物は他の成果物のスナップショットで完全にテストされ、すべての成果物がうまく機能します。多くの場合、アーティファクトは同時に開発され、後方互換性なしで互いに依存します。

パイプラインの最後のステージは、特定のアーティファクトのリリース候補を他のアーティファクトのリリースバージョンでテストします。アーティファクトBの2.3.5-SNAPSHOTでテストされ、合格したアーティファクトAのリリース2.0.1。アーティファクトBがまだ2.3.5をリリースしていないので(これは数時間後になる)、デッドエンドとなる。だから明らかにアーティファクトAは2.3.4のアーチファクトB(Bの最新リリース)に対してテストされているため、この段階で失敗します。

すべての成果物が同じパイプラインを持っているとします。ちょうどそれを総括する

Artifact A is at 2.0.1-SNAPSHOT attempting to release 2.0.1, its latest release is 2.0.0 Artifact B is at 2.5.2-SNAPSHOT attempting to release 2.5.2, its latest release is 2.5.1

stage 0 test -> A 2.0.0 with B 2.5.1 - PASSED

stage 1 test -> A 2.0.1-SNAPSHOT with B 2.5.2-SNAPSHOT - PASSED

stage 2 test -> A 2.0.1-SNAPSHOT with B 2.5.1- FAILED

私はそれがBリリース2.5.2まで失敗し続けることを理解し、どのように私はそれを配達パイプラインで考慮してください。私はアーティファクトAが毎週リリースできるようにしたい。

私が探しているのは、配送用パイプラインの穴です。パイプラインに別のステージが必要ですか?収集されたスナップショットの別のスナップショットをリリースしますか?

+0

バージョン範囲を使用していますか? '[2.5.2-SNAPSHOT、2.5.2]'は下位互換性に注意が必要な場合には動作します。あなた自身のバージョンリゾルバを作成しなければならないかもしれません。私はMavenが2.5.2より前の2.5.2-SNAPSHOTを考慮しているかどうかは分かりません。 –

+0

範囲を使うことができます。*これは私のビルドグリーンを維持しますが、私のビルドはいつか知りたいです。 SNAPSHOTを使用して、リリースバージョンの使用を開始したときは、基本的にBがリリースされたときに使用します。 – orepor

答えて

0

私はあなたがAは、あなたがテスト中にBのスナップショットを使用しないでください、サードパーティのライブラリとしてBに依存する場合

AとBの間で依存関係の種類を決定する必要があると思います。このようにして、Bの次回のリリースでブロックされることは決してありません。

AがマルチモジュールプロジェクトのモジュールとしてBに依存する場合は、手動でMavenの作業を行う必要があります。それはあなたが最初にBのRELEASEを構築し、その後AのRELEASEを構築する必要があることを意味します。

+0

ありがとう、後者は私が話しているものです。私は手作業でパイプラインを自動化したい。 – orepor

+0

@oreporを手動でビルドリリースを手動で起動することを意味しません。このような方法でパイプラインを更新する必要があります.AのリリースはBのリリース前には発生しません.Aリリースでは検証が可能です。 Aがリリースされたときなど、自動的にBをリリースすることができます... –

+0

私はあなたが何を意味しているのか分かりませんが、今日はAがBに依存する機能を構築しており、明日のBはAに依存する機能をリリースします。 – orepor

関連する問題