Як організована безперервна інтеграція у великих компаніях?


11

У моїй компанії звичайно не робити жодної проміжної збірки, щоб перевірити, як кожна гілка функції / помилки об'єднується в розробник. Існує лише щоденна збірка, яка завжди викликає багато помилок тесту та помилок у складанні. Мені сказали, що для кожного злиття робити понад 1000 розробників нерозумно.

Тому я шукав, як організовано CI в компаніях, у яких стільки розробників чи більше (Microsoft, Facebook), і нічого не знайшов. Може, інсайдери можуть мені тоді сказати?



@gnat Ви адекватні? Як це пов'язано? Я попросив досвід роботи з інсайдером і вказав на приклади компаній. Я не запитував жодної підтримки клієнтів.
Megamozg

11
@gnat Я не бачу, як це пов'язано з цим. Мегамозг: CI організований модулем проектів, не існує модуля з 1000 розробниками. Тож якщо людей занадто багато, скоротіть ваш проект / модуль у меншій частині.
Вальфрат

@Walfrat це повністю пов'язано. Цей веб-сайт не призначений для проведення опитувань / опитувань великих компаній щодо інсайдерів про те, як їхні компанії роблять різні справи. Якщо вам цікаво подібне, вони повинні використовувати канали підтримки цих компаній
gnat

@gnat Я дійсно не бачу, як застосовано вами посилання, особливо з коментарем, який ви надали у відповідь на Walfrat. Виходячи з цього коментаря, цей ІМХО стане правильним посиланням (частина про запитання щодо типу опитування) softwareengineering.meta.stackexchange.com/a/6490
Ньютопійський

Відповіді:


12

Це, в основному, проблема масштабування. Ви розділяєте свою роботу на модулі, які можуть бути різними проектами та / або різними функціональними можливостями вашого продукту.

У вас будуть команди, які охоплюють набори цих модулів. Кожна з цих команд матиме CI-цикли, встановлені для своїх областей, і лише після того, як пройдуть їхні відповідні цикли, код буде висунутий на master repos, де буде запущений головний цикл CI.

Цикл головного CI, швидше за все, відрізнятиметься від циклів CI на рівні команди в цих аспектах:

  • Цикли CI на рівні команди не повинні будувати код всієї компанії, а лише ті модулі, за які вони відповідають і залежні модулі. Якщо є два модулі, які є абсолютно незалежними та в різних командах, вони не були б частиною циклу CI іншої команди.
  • Цикли CI на рівні команди можуть мати набагато більш детальні автоматизовані тести, ніж основний цикл CI. Цикл Master CI повинен мати тести на перевірку санітарності та регресійні тести, які, залежно від розміру головного рішення, слід проводити щодня або навіть щотижня, оскільки на виконання цих тестів іноді може знадобитися більше 24 годин.

Що ви повинні зробити з цим підходом, це надати автоматизований поштовх від локальної репозиції до центральної репо після того, як пройде цикл локального CI, щоб не розробники витратили величезну кількість часу, щоб перенести код на центральний репост.


7

На додаток до того, що сказав @Vladimir_Stokic, на деяких командах (у мене є ~ 150 розробників) ми робимо нарощування частіше, ніж кожні 24 години. Щоразу, коли відбувається фіксація, ми запускаємо 5-хвилинний таймер. Після закінчення 5 хвилин усі об'єкти, що відбулися протягом 5-хвилинного інтервалу, поєднуються та будуються. Збірка, як правило, наростає. У нас є окремий конструктор, який виконує одиничні тести для кожної збірки, що відбувається. Після закінчення збірки, якщо під час збирання було більше комісій (що займає від 1 до 45 хвилин, залежно від того, що змінилося), будь-які очікувані зміни будуються тощо. У нас також є нічна (чиста, повна) збірка, але склади, які трапляються при кожному здійсненні (приблизно), дуже швидко говорять нам про те, що якісь тести не вдається.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.