Какой инструмент непрерывной интеграции лучше всего подходит для проекта С++?
Cruisecontrol и Hudson - две популярные системы непрерывной интеграции. Несмотря на то, что обе системы способны делать автоматические непрерывные сборки красиво, проще всего создать пакетную или bash сборку script, а затем использовать планировщик Windows или cron для расписания сборки.
Существуют ли более совершенные системы непрерывной интеграции для проектов на C++? Или просто использует script и планировщик более простой способ?
Ответы
Ответ 1
Мы использовали CruiseControl для CI в проекте С++. Хотя это единственное, что мы используем ant для, ant build script для CruiseControl только начинает нашу нормальную сборку script, поэтому она очень проста, и нам не нужно было ее обновлять долго в то время как. Поэтому тот факт, что CrusieControl - это Java, на самом деле не является проблемой для нас.
Основными преимуществами использования чего-то типа круиз-контроля являются
- Хорошая веб-страница, показывающая статус сборки.
- Электронная почта после каждой сборки или после неудачных сборок
- Автоматическая сборка после фиксации в системе управления исходным кодом
- Плагин firefox для контроля состояния сборки
- Показывает результат для любых ошибок сборки.
- Показывает, какие файлы изменились со времени последней сборки (хорошо, чтобы узнать, какой разработчик сломал buid).
Конечно, вы можете написать script себя, который делает все это, но зачем все это работает? В конечном счете, дополнительные первоначальные затраты на настройку CruiseControl (или что-то подобное), вероятно, намного меньше, чем затраты на поддержку и обновление пользовательской сборки CI script.
Если вам нужно всего лишь запустить ежедневную сборку, а простой script, запущенный cron, достаточен для ваших нужд, тогда обязательно это сделайте. Однако одним из преимуществ CI является то, что вы получаете отчет о статусе сборки после каждой проверки. Написание script для этого требует больше работы, и CruiseControl уже делает это.
Ответ 2
Мы используем Hudson для CI и SonarQube для показателей кода. Они интегрированы, и у Хадсона есть несколько плагинов, которые никакие cronjob не могут бить.
Один большой плагин - игра CI, которая держит оценку того, кто нарушает сборку и кто совершает, не нарушая ее. У Хадсона есть плагины, чтобы играть с VMWare, Selenium, SVN, CSV, Git. У него есть синдикация RSS, которая может помочь вам автоматизировать еще больше всего.
Хадсон велик...
Ответ 3
Я использовал Buildbot для Spring Проект RTS успешно.
Ответ 4
Мы использовали Dart Dashboard. Это с открытым исходным кодом, но управляется KitWare. С тех пор они изменили имя на CDash, который, как я полагаю, по-прежнему способен. Мы проводим несколько видов тестирования, включая ночную и непрерывную интеграцию на 10 разных платформах как в режиме отладки, так и в режиме выпуска, а также в запуске 1000-х тестов приложений и отчетности о результатах.
Ответ 5
Вы также можете попробовать TeamCity JetBrains. Это коммерческий продукт, но он дает бесплатную лицензию для 20 конфигураций сборки.
Ответ 6
Одна из приятных функций инструмента непрерывной интеграции (CI) заключается в том, что сборка запускается каждый раз, когда что-то проверяется в вашем репозитории управления версиями.
Если это не то, что вам нужно, вы, вероятно, лучше используете планировщик задач Windows или задания cron.
Кроме того, инструменты CI также имеют панель инструментов (web) и расширенные возможности ведения журнала.
Ваш вопрос мне кажется более "почему я должен использовать инструмент CI", затем "какой инструмент CI я должен использовать". Если пакет script удовлетворяет ваши потребности, используйте это. (Re) создание среды сборки становится проще, если вам не нужен инструмент CI в качестве дополнительного компонента. Если вы хотите создать сборку с контролем источника, панель управления, хранилище старых результатов сборки или другое ведение журнала, используйте инструмент CI и избегайте разработки всех таких функций в сценариях пакетной или командной оболочки.