これはプログラミングに関する質問ではなく、配信パイプラインに関する質問です。
当社の製品は、いくつかの 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 を毎週リリースできるようにしてほしい。
私が探しているのは、配信パイプラインのこの穴を修正することです。パイプラインに別のステージが必要ですか? 収集したスナップショットの別のスナップショットをリリースしますか?