Сервер Hudson CI отображает стабильность «погоды», что круто. И это позволяет начать сборку одного проекта на основе успешной сборки другого. Однако как вы можете сделать этот вторичный проект зависимым от стабильности нескольких сборок первого проекта?
В частности, проект "stable_deploy" должен запускаться только для продвижения версии до "stable", если проект "интегрируется" с версией 8.3.4.1233 успешно собран и протестирован не менее 8 раз - подряд. До этого он все еще находится в режиме интеграции.
ВАЖНО: Важным предупреждением для этого является то, что один набор проектов Hudson используется в качестве «конвейера» для обработки каждой новой версии до выпуска. Таким образом, проект может быть успешно собран 8 раз за раз, но последняя версия 8.3.4.1233 может быть только двумя самыми последними сборками. Сборки до этого могут быть более ранней версией.
Мы готовы полностью реорганизовать это, но идея конвейера, казалось, значительно сократила объем создания и удаления проекта вручную. Есть ли лучший способ отслеживать выпуск версии "конвейера"? В частности, в будущем у нас будет несколько версий в этом конвейере одновременно из-за исправлений или исправлений для более старых версий. Мы пока не видим, как это сделать, за исключением создания новых конвейерных проектов для каждой версии, что создает большие трудности.
Вот некоторые детали фона:
Приложение TickZoom имеет несколько очень полных модульных тестов, некоторые из которых имитируют торговую среду в реальном времени. Добавьте к этому, TickZoom тщательно использует распараллеливание для использования многоядерных компьютеров. Само собой разумеется, что при разработке новой версии могут возникнуть проблемы со стабильностью во время интеграционного тестирования, которые обнаруживаются при многократном запуске сборки и автоматических тестов. Версия, которая собирает и тестирует чисто 8 раз подряд без изменений, а также прошла некоторое реальное тестирование пользователями, может считаться «стабильной» и переведена в стабильную ветвь.
Наши проекты Hudson выглядят так:
test - только для тестирования сборки, нулевая видимость пользователя.
integrate_deploy - продвигает сборку тестового проекта для интеграции ветки и делает ее
доступны для публичного тестирования на UA.
интегрировать - неоднократно строит ветку интеграции, чтобы определить,
достаточно стабильный, чтобы продвинуться к стабильной отрасли. Это запускает
строит и тестирует ежечасно в течение каждой ночи.
stable_deploy - продвигает интегрированную сборку проекта в стабильную ветку и
делает его общедоступным для пользователей, которые хотят, чтобы последние и лучшие.
stable - создает стабильную ветку раз в ночь После 2 недель
успешные сборки (14 сборок) можно перейти к «релиз-кандидату».
И так далее ... это продолжается с "релиз-кандидат", а затем "релиз".