1

これはプログラミングに関する質問ではなく、配信パイプラインに関する質問です。

当社の製品は、いくつかの Maven アーティファクトで構築されており、スナップショット (2.0.1-SNAPSHOT) を毎日リリースし、バージョン (2.0.1) を毎週リリースしています。開発中、アーティファクトは他のアーティファクトのスナップショットを使用して完全にテストされ、すべて正常に動作します。多くの場合、アーティファクトは同時に開発されるため、下位互換性なしで相互に依存します

パイプラインの最終段階では、特定のアーティファクトのリリース候補を他のアーティファクトのリリース バージョンでテストするため、アーティファクト B の 2.3.5-SNAPSHOT でテストされ、合格したアーティファクト A の 2.0.1 をリリースしようとしています。 . 合格するとアーティファクトAが解放される(2.0.1-SNAPSHOTが2.0.1になる)

アーティファクト B はまだ 2.3.5 をリリースしていないため (数時間後にリリースされます)、ここで行き止まりになります。したがって、アーティファクト B の 2.3.4 (B の最新リリース) に対してテストされているため、明らかにアーティファクト A はこの段階で失敗します。

すべてのアーティファクトに同じパイプラインがあると仮定しましょう。

要約すると: 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 を毎週リリースできるようにしてほしい。

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

4

1 に答える 1

0

A と B の間にどのような依存関係があるかを判断する必要があると思います。

A がサード パーティのライブラリとして B に依存している場合、テスト中に B の SNAPSHOT を使用しないでください。このようにして、B の今後のリリースによってブロックされることはありません。

A がマルチモジュール プロジェクトのモジュールとして B に依存している場合、Maven の作業を手動で行う必要があります。つまり、最初に B の RELEASE をビルドし、その後で A の RELEASE をビルドする必要があります。

于 2016-07-06T22:32:57.827 に答える