1

Это не программирование вопрос по а вопрос доставки трубопровода:Управление несколькими Maven артефактов в трубопроводе подачи

Наш продукт построен из нескольких Maven артефактов, которые высвобождают снимкам (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

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

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

+0

Вы используете диапазоны версий? '[2.5.2-SNAPSHOT, 2.5.2]' может работать, если вы будете осторожны с обратной совместимостью. Возможно, вам придется создать свой собственный редактор. Я не уверен, что maven считает, что 2.5.2-SNAPSHOT будет до 2.5.2 ... –

+0

Я мог бы использовать диапазоны, и это * будет * держать мою строчку зеленой, но я все равно хотел бы знать, когда моя сборка используя SNAPSHOT и когда он начал использовать версию выпуска, поэтому в основном, когда B выпустил. – orepor

ответ

0

Я думаю, что вы должны решить, какой вид зависимости между А и В.

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

Если A зависит от B как модуля в проекте с несколькими модулями, вы должны выполнить работу maven вручную. Это означает, что вам нужно сначала создать BE RELEASE, а затем A RELEASE.

+0

Спасибо, последнее, о чем я говорю. Я бы хотел, чтобы мой трубопровод был автоматическим без ручных шагов. – orepor

+0

@orepor вручную не означает, чтобы запускать релизы сборки вручную. Вам необходимо обновить свой конвейер таким образом, что выпуск A не произойдет до выпуска B. он может быть проверен в версии A. Это может быть выпуск B автоматически, когда A выпущен и т. Д. ... –

+0

Я вижу, что вы имеете в виду, только проблема заключается в том, что сегодня A строит функцию, которая зависит от B, а завтра B выпустит функцию, зависящую от A – orepor

 Смежные вопросы

  • Нет связанных вопросов^_^