Я є частиною групи розвитку з 5 командами, загалом близько 40 розробників. Ми дотримуємось методології Scrum, з 3-тижневими спринтами. У нас є безперервна установка інтеграції (Дженкінс), трубопровід якого займає кілька годин (за рахунок широких автоматизованих тестів). В основному процес розробки працює добре.
Однак ми зауважуємо, що через кілька днів у новому спринті наша збірка часто стає нестабільною і залишається хиткою, поки спринтер не закінчиться. Несприятливий ефект цього полягає в тому, що кроки збирання далеко вниз по конвеєру, особливо користувальницькі інтерфейси / веб-тести, не виконуються протягом декількох днів (тому що спрацьовує лише на "зеленій" збірці). Отже, нещодавно внесені помилки часто виявляються лише дуже пізно у спринті.
- Кожна комісія перевіряється на основі базового набору тестів. Після перевірки зміна буде натиснуто на головний після перегляду коду (Gerrit)
- Основні одиничні тести проводяться кожні 30 хвилин, тривалістю менше 10 хв
- Інтеграційні тести працюють кожні 2 год, тривалість 1 год
- UI- / веб-тести працюють на успішних тестах інтеграції, тривалістю декілька годин
Залежно від того, хто відповідає за стабільність збірки під час спринту (ця відповідальність передається за спринт), можуть бути проміжні, спеціальні "фіксації зупинки", щоб повернути збірку до стабільної.
Отже, ми хочемо:
- Наші команди розробників розробляють та здійснюють зміни під час спринту безперешкодно
- Якщо процес збірки не вдасться відмовитись від способу збирання, результати подальшого збирання мають мало значення
- Наш процес збирання, щоб своєчасно надавати якісний зворотній зв’язок розробникам
З огляду на (2), пункти (1) та (3), здається, суперечать один одному. Хтось має добру практику, як з цим боротися?
( Наразі ми втрачаємо точку (2) і дозволяємо продовжувати збирання навіть у невдалих сходинках. У мене поки що немає відгуків, як це впливає на нашу якість )
Спасибі, Саймоне
several hours
то це справжня проблема. це означає, що комбіноване рішення занадто велике і занадто широке. Ви повинні поглянути на компонентне рішення, а потім мати невеликі шматки коду як пакети (доступні так чи інакше всіма основними мовами на всіх платформах). Таким чином, будь-які зміни входитимуть лише в компоненти та будуть виявлені набагато швидше. Повна збірка по суті буде просто поєднувати вже комбіновані компоненти, а також буде швидшою. Тоді ви зможете запустити лише тести, щоб забезпечити вирішення правильних компонентів.