Какой инструмент непрерывной интеграции лучше всего подходит для проекта C++?

Cruisecontrol и Hudson - две популярные системы непрерывной интеграции. Хотя обе системы способны выполнять автоматические непрерывные сборки, просто кажется, что гораздо проще создать сценарий пакетной или bash-сборки, а затем использовать планировщик Windows или cron для планирования сборок.

Существуют ли лучшие системы непрерывной интеграции для проектов C++? Или проще использовать скрипт и планировщик?

6 ответов

Решение

Мы использовали CruiseControl для CI в проекте C++. Хотя это единственное, для чего мы используем ant, скрипт сборки ant для CruiseControl просто запускает наш обычный скрипт сборки, поэтому он очень прост, и нам не нужно было его долго обновлять. Поэтому тот факт, что CrusieControl основан на Java, на самом деле не является для нас проблемой.

Основными преимуществами использования чего-то вроде круиз-контроля являются

  • Хорошая веб-страница, показывающая статус сборки
  • Электронная почта после каждой сборки или после неудачной сборки
  • Автоматически создавать после фиксации в системе контроля версий
  • Плагин Firefox для мониторинга состояния сборки
  • Показывает вывод для любых ошибок сборки.
  • Показывает, какие файлы изменились с момента последней сборки (хорошо, чтобы увидеть, какой разработчик сломал Buid)

Конечно, вы можете написать сценарий самостоятельно, который делает все это, но почему все это работает? В долгосрочной перспективе дополнительные начальные затраты на настройку CruiseControl (или чего-то подобного), вероятно, намного меньше, чем затраты на обслуживание и обновление пользовательского сценария сборки CI.

Если все, что вам нужно, - это запускать ежедневную сборку, а простого сценария, запущенного cron, достаточно для ваших нужд, тогда обязательно сделайте это. Однако одним из преимуществ CI является то, что вы получаете отчет о состоянии сборки после каждой регистрации. Написание сценария, который требует больше работы, и CruiseControl уже делает это.

Мы используем Hudson для CI и SonarQube для метрик кода. Они интегрированы, и у Хадсона есть несколько плагинов, которые ни один cronjob не может превзойти.

Одним из замечательных плагинов является CI Game, которая ведет учет того, кто нарушает сборки и кто совершает их, не нарушая их. У Hudson есть плагины для работы с VMWare, Selenium, SVN, CSV, Git. Он имеет RSS-синдикацию, которая может помочь вам еще больше автоматизировать все остальное.

Хадсон великолепен...

Я успешно использовал Buildbot для проекта движка Spring RTS.

Мы использовали Dart Dashboard. Это с открытым исходным кодом, но управляется KitWare. С тех пор они изменили название на CDash, которое, я полагаю, все еще способно. Мы проводим несколько видов тестирования, включая ночную и непрерывную интеграцию на 10 различных платформах как в режиме отладки, так и в режиме выпуска, а также проводим тысячи тестов приложений и публикуем там результаты.

Вы также можете попробовать JetCrains TeamCity. Это коммерческий продукт, но он дает бесплатную лицензию на 20 конфигураций сборки.

Одной из приятных особенностей инструмента непрерывной интеграции (CI) является то, что сборка запускается каждый раз, когда что-то проверяется в вашем репозитории контроля версий.

Если это не то, что вам нужно, то вам, вероятно, лучше использовать планировщик задач Windows или задания cron.

Кроме того, инструменты CI также поставляются с (веб) приборной панелью и расширенными возможностями ведения журнала.

Ваш вопрос мне кажется более "зачем мне использовать инструмент CI", чем "какой инструмент CI мне следует использовать". Если вам нужен пакетный скрипт, используйте его. (Пере) создание среды сборки становится проще, если вам не нужен инструмент CI в качестве дополнительного компонента. Если вам нужна сборка, запускаемая из-за контроля версий, панель инструментов, хранилище результатов старых сборок или другое ведение журнала, используйте инструмент CI и избегайте разработки всех таких функций в пакетных или командных сценариях.

Другие вопросы по тегам