Я бы не слишком увлекся тем, что система КИ должна делать или не делать.Вместо этого я бы сосредоточился на проблеме, которую вы пытаетесь решить.Похоже, что эта проблема заключается в том, чтобы облегчить разработку на нескольких платформах.Вы можете использовать концепцию непрерывной интеграции и добавить к ней успешное решение проблемы.Я знаю, потому что я делал это в прошлом.
Я реализовал систему сборки для кода, который должен был успешно компилироваться и тестироваться на 4 различных платформах (nt, wince, linux-arm, linux-x86) .Сервер CI будет:
- Использовать компиляцию сервера сборки linux и winnt (и кросс-компиляцию)
- Затем скомпилированные тесты и вспомогательные библиотеки будут скопированы всоответствующие устройства и автоматический запуск теста.
- После того, как набор тестов будет завершен, журнал будет скопирован обратно (или он был записан в fs, смонтированный в сети)
- Если тестовый набор был успешным, мы помечаем исходный код и упаковываем библиотеки и исполняемые файлы.
Эта же платформа была повторно использована для проверки разработчиком перед фиксацией.Разработчики будут запускать частичную сборку и тестировать (будет перекомпилирован только обновленный исходный код, и эти тесты будут перезапущены) .CI будет выполнять полную сборку (с нуля) .
Наша сборка была довольно быстрой, потому что у нас был правильный DAG для зависимостей сборки.Это позволило одновременно выполнять компиляцию в рамках сборки платформы.Каждая сборка платформы также была параллельной.В результате частичная сборка заняла несколько секунд, полная сборка заняла ~ 30 минут.Наши серверы сборки были довольно мощными (оптимизирован для быстрой компиляции) , а кодовая база была среднего размера (я не помню статистику) .