Я являюсь частью группы разработчиков с 5 командами, всего около 40 разработчиков. Мы следуем методологии Scrum с 3-недельными спринтами. У нас есть установка непрерывной интеграции (Jenkins), конвейер сборки которой занимает несколько часов (из-за обширных автоматических тестов). В основном процесс разработки работает хорошо.
Однако мы наблюдаем, что после нескольких дней нового спринта наша сборка часто становится нестабильной и остается шаткой до тех пор, пока конец спринта не завершится. Отрицательный эффект этого состоит в том, что шаги сборки далеко вниз по конвейеру, особенно UI- / Webtests, не выполняются в течение нескольких дней (потому что запускаются только при «зеленой» сборке). Следовательно, вновь появившиеся ошибки часто обнаруживаются только очень поздно в спринте.
- Каждый коммит проверяется на соответствие базовому набору тестов. После проверки изменение передается мастеру после проверки кода (Gerrit).
- Базовые юнит-тесты запускаются каждые 30 минут, продолжительность менее 10 минут
- Интеграционные тесты запускаются каждые 2 часа, продолжительность 1 час
- UI- / Webtests запускаются на успешных интеграционных тестах, продолжительность нескольких часов
В зависимости от того, кто отвечает за стабильность сборки во время спринта (эта ответственность передается за спринт), могут существовать промежуточные, специальные «фиксации остановки», чтобы вернуть сборку в стабильное состояние.
Итак, мы хотим:
- Наши команды разработчиков разрабатывают и фиксируют изменения во время спринта без помех
- Наш процесс сборки следует прекратить в случае неудачи на этапе сборки, поскольку последующие результаты сборки не имеют большого значения
- Наш процесс сборки, чтобы предоставить разработчикам качественную обратную связь на своевременной основе
Учитывая (2), точки (1) и (3) кажутся противоречащими друг другу. У кого-нибудь есть хорошая практика, как с этим бороться?
( В настоящее время мы ослабляем точку (2) и разрешаем продолжение сборки даже на неудачных этапах сборки. У меня пока нет отзывов о том, как это влияет на наше качество )
Спасибо симон
several hours
то это реальная проблема. это означает, что комбинированное решение слишком большое и слишком широкое. Вы должны попытаться создать компонентное решение и затем иметь небольшие куски кода в виде пакетов (так или иначе доступных на всех основных языках на всех платформах). Таким образом, любые изменения будут распространяться только на компоненты и будут обнаружены намного быстрее. Полная сборка, по сути, просто объединит вместе уже объединенные компоненты, а также будет быстрее. Тогда вы можете запустить только некоторые тесты, чтобы убедиться, что правильные компоненты были разрешены.