Ivy отлично подходит для управления зависимостями, но он не предназначен для управления всем жизненным циклом программного обеспечения во многих модулях. Тем не менее, у него есть несколько функций, которые поддерживают его (например, атрибуты status
и branch
), а также лучшие практики ivy Рекламное объявление намекает на возможность продвигать версии интеграции до контрольной точки или выпуска, «с некоторой работой».
К сожалению, я не нашел подробного руководства о том, как управлять циклом разработки -> тестирования -> развертывания. Вот некоторые вещи, которых я хочу достичь:
(Учитывая, что разработчики обычно работают со многими модулями в локальной рабочей области)
- Разработчик может локально публиковать изменения в модуле, чтобы другие модули в рабочей области могли получать обновленные артефакты.
- Разработчик может пометить версию как "готовую к развертыванию для тестирования" с помощью одной команды.
- Тестер может пометить версию как "готовую к работе" с помощью одной команды.
- Разработчик может пересобрать любую версию из исходного кода, и соответствующие зависимости будут подобраны правильно (повторяемые сборки).
Вот некоторые вещи, о которых я совершенно ясно:
- Редакция
status
должна использоваться для обозначения того, предназначена ли эта редакция только для разработки, готова ли она для тестирования или готова к производству. - Атрибута
branch
должно быть достаточно для обработки разных ветвей проекта.
Вот с чем я борюсь:
Как продвигать интеграционные сборки
Скажем, у меня есть эти модули, проверенные в моей рабочей области:
Теперь я доволен модулем а и решил опубликовать веху, используя проверенные версии в моей рабочей области. Что должно произойти в репо:
e-1.0-RC1
публикуетсяd-1.1-RC2
публикуется, ссылаясь наe-1.0-RC1
как на зависимостьc-2.0-RC1
публикуется, ссылаясь наd-1.1-RC2
как на зависимостьb-3.3-RC1
публикуется, ссылаясь наe-1.0-RC1
как на зависимость- Наконец,
a-7.1-RC2
публикуется, ссылаясь наc-2.0-RC1
иb-3.3-RC1
как на зависимости.
Если я попытаюсь свернуть свою собственную для этого, я, вероятно, в конечном итоге займусь управлением рабочим пространством, поиском и заменой ivy.xml и т. Д. Прежде чем я открою эту банку червей, я хотел бы узнать некоторые мнения. Каков наилучший способ справиться с этим?