Continuous integration для C++
#1
Отправлено 02 июля 2009 - 12:20
Наша компания неожиданно решила сменить язык на котором писать следующую версию приложения на C++ в связи с чем появилась необходимость найти приложение для С++ которое будет выполнять следующее:
- делать билды по какому-нибудь ивенту (нажатие кнопки, будтльник, или апдейт сорсов)
- выполнять юнит тесты сразу же по успешному завершению билда
- показывать результаты билдов и/или юнит тестов в каком-нибудь виде
- при необходимости на разных этапах высылать уведомления по почте, например в случае плохого билда, или наоборот что билд был успешным.
Раньше всё писалось на Java и для этих нужд весьма успешно пользовался CruiseControl, теперь нужно найти такое же для C.
Заранее Спасибо!
#2
Отправлено 02 июля 2009 - 13:28
Сборка произвольной командой в нем есть (exec). Ну да, лог будет выглядеть не так красиво, как при использовании Ant/maven для сборки. Но все Ваши требования будут выполнены.
Могут еще возникнуть проблемы с логами тестов, но вроде бы (могу ошибаться) все основные фреймворки тестирования для C/С++ поддерживают отчеты в XML совместимом с JUnit.
Кстати вопрос, для сборки собираетесь использовать make?
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#3
Отправлено 02 июля 2009 - 13:38
А в чем проблема? Чем CruiseControl Вас не устраивает?
Сборка произвольной командой в нем есть (exec). Ну да, лог будет выглядеть не так красиво, как при использовании Ant/maven для сборки. Но все Ваши требования будут выполнены.
Могут еще возникнуть проблемы с логами тестов, но вроде бы (могу ошибаться) все основные фреймворки тестирования для C/С++ поддерживают отчеты в XML совместимом с JUnit.
CC сейчас устраивает, но хотелось бы знать народное мнение, ведь наверняка есть что-нибудь специально заточенное под cpp, да к тому же может есть что-то поудобнее CC.
Фактически данное событие (смена языка) мы расцениваем как возможность улучшить свои условия, поэтому и интересуюсь.
Кстати вопрос, для сборки собираетесь использовать make?
Пока что решения нет, так что возможны варианты.
#4
Отправлено 02 июля 2009 - 13:57
Это надо решить в первую очередь. Ведь интеграционный сервер будет работать со средством сборки, а не с языком. Может Вы Ant`ом будете собирать (шутка), тогда все прекрасно заработает, почти как с java.Пока что решения нет, так что возможны варианты.
Рекомендую обратить внимание на Scons. Например у Hudson есть его поддержка.
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#5
Отправлено 06 июля 2009 - 08:37
#6
Отправлено 07 июля 2009 - 09:03
Это надо решить в первую очередь. Ведь интеграционный сервер будет работать со средством сборки, а не с языком. Может Вы Ant`ом будете собирать (шутка), тогда все прекрасно заработает, почти как с java.Пока что решения нет, так что возможны варианты.
Рекомендую обратить внимание на Scons. Например у Hudson есть его поддержка.
сегодня на совещании будем решать. а какие есть ещё предпочтения кроме Scons?
#7
Отправлено 07 июля 2009 - 09:06
На самом деле собирать можно чем угодно,почти у всех Серверов Интеграции есть произвольные команды и скрипты,даже make можно прикрутить, на счет заточенных именно под C++ не видел (с с++ мы использовали решения на базе CruiseControl и Bamboo, проект был небольшой)
У нас как раз загвоздка в том что проект большой и будет длиться ещё 3-4 года, поэтому нужно выбрать соответствующее решение.
а чем CruiseControl хуже для С++ чем для java? какая часть функционала теряется?
#8
Отправлено 07 июля 2009 - 09:20
Тогда советую попробовать (почти) все, что есть, а есть много чего: TeamCity, Cruise, Hudson, CruiseControl, Bamboo, etc. Но CruiseContol у Вас уже используется, может нет резонов слезать, если не найдете killer feature в другом продукте.У нас как раз загвоздка в том что проект большой и будет длиться ещё 3-4 года, поэтому нужно выбрать соответствующее решение.
Кроме того при правильно организованной сборке сменить интеграционный сервер относительно легко.
Вам придется сборку запускать через exec, что не дает такой красоты и удобства при просмотре лога сборки в веб интерфейсе приложения. В целом мелочь, именно поэтому я вначале спросил, чем Вас не устраивает CC.а чем CruiseControl хуже для С++ чем для java? какая часть функционала теряется?
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#9
Отправлено 07 июля 2009 - 10:58
ну вот вам ссылки с ходу
http://www.codemesh....oc/ant_cpp.html
http://ant-contrib.s...asks/index.html
Если вы до этого не рассматривали другие CI кроме как СС, то обязательно пройдитесь по всем и лично просмотрите возможности систем. Согласен с Alfa
#10
Отправлено 07 июля 2009 - 12:06
Т.е. собирать Ant`ом C++ это ни разу ни шутка. Буду знать, спасибо.ну вот вам ссылки с ходу
http://www.codemesh....oc/ant_cpp.html
http://ant-contrib.s...asks/index.html
Для Ant есть еще расширение Gant, которое позволяет писать скрипты сборки на Groovy вместо XML. Тоже может в данном случае помочь.
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных