Це, в основному, проблема масштабування. Ви розділяєте свою роботу на модулі, які можуть бути різними проектами та / або різними функціональними можливостями вашого продукту.
У вас будуть команди, які охоплюють набори цих модулів. Кожна з цих команд матиме CI-цикли, встановлені для своїх областей, і лише після того, як пройдуть їхні відповідні цикли, код буде висунутий на master repos, де буде запущений головний цикл CI.
Цикл головного CI, швидше за все, відрізнятиметься від циклів CI на рівні команди в цих аспектах:
- Цикли CI на рівні команди не повинні будувати код всієї компанії, а лише ті модулі, за які вони відповідають і залежні модулі. Якщо є два модулі, які є абсолютно незалежними та в різних командах, вони не були б частиною циклу CI іншої команди.
- Цикли CI на рівні команди можуть мати набагато більш детальні автоматизовані тести, ніж основний цикл CI. Цикл Master CI повинен мати тести на перевірку санітарності та регресійні тести, які, залежно від розміру головного рішення, слід проводити щодня або навіть щотижня, оскільки на виконання цих тестів іноді може знадобитися більше 24 годин.
Що ви повинні зробити з цим підходом, це надати автоматизований поштовх від локальної репозиції до центральної репо після того, як пройде цикл локального CI, щоб не розробники витратили величезну кількість часу, щоб перенести код на центральний репост.