Управление несколькими артефактами Maven в конвейере доставки

Это не вопрос программирования, а вопрос конвейера доставки:

Наш продукт состоит из нескольких артефактов Maven, которые выпускают SNAPSHOTS (2.0.1-SNAPSHOT) ежедневно и выпускают версии (2.0.1) на еженедельной основе. В процессе разработки наши артефакты полностью тестируются со снимками других артефактов, и все работает хорошо. Во многих случаях артефакты развиваются одновременно и зависят от друг друга без обратной совместимости.

На последнем этапе конвейера проверяется кандидат на выпуск определенного артефакта с версиями выпуска других артефактов, поэтому я пытаюсь выпустить 2.0.1 артефакта A, который был протестирован с 2.3.5-SNAPSHOT артефакта B и прошел, Если он проходит, артефакт A освобождается (2.0.1-SNAPSHOT становится 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

Я понимаю, что он продолжит давать сбои до выпуска 2.5.2 B, но как мне учесть это в моем конвейере доставки. Я хочу, чтобы артефакт А можно было выпускать еженедельно.

То, что я ищу, - это исправление этой дыры в моем конвейере доставки. Нужен ли мне еще один этап в стадии разработки? выпустить еще один SNAPSHOT из собранных снимков?

1 ответ

Я думаю, что вам нужно решить, какая зависимость между A и B.

Если A зависит от B как сторонней библиотеки, вы никогда не должны использовать B SNAPSHOT во время тестирования. Таким образом, вы никогда не будете заблокированы предстоящим выпуском B.

Если A зависит от B как модуля в многомодульном проекте, вам следует выполнить работу maven вручную. Это означает, что вам нужно сначала создать РЕЛИЗ В, а затем РЕЛИЗ А.

Другие вопросы по тегам