Ivy отлично подходит для управления зависимостями, но не предназначен для обработки всего жизненного цикла программного обеспечения во многих модулях. Тем не менее, у него есть несколько функций, которые, похоже, поддерживают его (например, атрибуты status
и branch
), а передовой опыт внедрения плюща указывает на возможность продвижения изменений интеграции к этапу или выпуску "с некоторой работой".
К сожалению, я не нашел окончательного руководства по управлению циклом dev → test → deploy. Вот некоторые вещи, которые я хочу достичь:
(Учитывая, что разработчики обычно работают во многих модулях в локальной рабочей области)
- Dev может локально публиковать изменения в модуле, чтобы другие модули в рабочей области могли получать обновленные артефакты.
- Dev может назначить версию "готов к развертыванию для тестирования" с помощью одной команды.
- Тестер может обозначить версию как "готовую для prod" с помощью одной команды.
- Dev может перестроить любую версию из источника, и соответствующие зависимости будут правильно подобраны (например, повторяющиеся сборки).
Некоторые вещи, о которых я довольно ясно представляю, следующие:
- Версия
status
должна использоваться для обозначения того, предназначена ли эта ревизия только для разработки, готова к тестированию или готова к выпуску - Атрибут
branch
должен быть достаточным для обработки разных ветвей проекта.
Вот что я боюсь:
Как продвигать интеграционные сборки
Скажем, что эти модули проверены в моей рабочей области:
Теперь я доволен модулем a и решил опубликовать веху с использованием проверенных версий в моей рабочей области. Что должно произойти в репо:
-
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 и т.д. Прежде чем открыть эту возможность червей, я хотел бы получить некоторые мнения. Какой лучший способ справиться с этим?