Подтвердить что ты не робот

Рекомендации по созданию сервера/постоянной интеграции для проектов на основе С++/Qt

Я хочу реализовать сервер сборки для проектов на С++ на основе Qt. Серверу необходимо проверить необходимый код/​​активы из Subversion, собрать исполняемые файлы, собрать артефакты для проектов установки и собрать установочные мультимедийные файлы. Целевые платформы и (грубые) инструментальные цепочки:

  • Windows (32- и 64-разрядный): qmake, nmake, msbuild, wix toolchain. Конечным результатом является образ EXE и DVD-образа установщика.
  • Mac OS X: qmake, make, custom bash скрипты для сборки пакета. Конечным результатом является пакет приложений в образе диска и образ DVD.
  • Ubuntu (32- и 64-разрядный): сценарии qmake, make, debuild. Конечным результатом является коллекция файлов DEB и образа DVD.
  • Fedora (32- и 64-разрядный): qmake, make, rpmbuild-скрипты. Конечным результатом является сборка файлов RPM и образа DVD.

Итак, по крайней мере, 4 агента сборки (возможно, больше, если 32 и 64-разрядные не могут быть выполнены в одном окне) и 7 конфигураций. Проекты с открытым исходным кодом являются предпочтительными, но это не является абсолютным требованием.

Большинство инструментов, которые я вижу, похоже, обслуживаются Java (Jenkins, CruiseControl и т.д.) или .Net(CruiseControl.net и т.д.). Могут ли они использоваться с инструментальной связкой С++ или я буду постоянно борьба с системой? Что-нибудь, что вы использовали в прошлом и нашел хорошо работает с Qt/С++?

4b9b3361

Ответ 1

Я использую Jenkins для создания и упаковки многих проектов на С++ на основе qmake, cmake и make файлов.

plugins для cmake, qmake и msbuild, но также можно запускать любые сценарии командной строки.

Я делал упаковку с помощью Jenkins без проблем, поскольку это просто еще один шаг командной строки в проекте.

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

Он также имеет сборки матрицы, которые позволяют вам создавать проект несколько раз с различными комбинациями флагов компилятора, препроцессорных переменных, платформы и т.д. Один проект, который я создал, представляет собой матричную сборку с 5 булевыми препроцессорными флагами на двух платформах, который затем строит 2 ^ 6 = 64. Они могут немного подстраиваться, чтобы получить правильные результаты.

Ответ 2

Здесь вы можете прочитать быстрый пример:

Сервер непрерывной интеграции - Хадсон

Я думаю, что Хадсон, Дженкинс и Буилбот стоит попробовать. Пробывая день или два, оценивая и примеряя их быстрым примером, вы сможете уверенно выбирать.

Ответ 3

Большинство инструментов, которые я вижу, похоже, обслуживаются Java (Jenkins, CruiseControl и т.д.) или .Net(CruiseControl.net и т.д.). Могут ли они использоваться с инструментальной связкой С++ или я буду постоянно борьба с системой? Что-нибудь, что вы использовали в прошлом и нашел хорошо работает с Qt/С++?

Любая разумно способная система CI будет иметь часть, которая позволит вам выполнить любую программу, которую вы хотите для своей команды сборки.

Вот что я хотел бы рассмотреть:

  • Используется ли система CI в вашей системе (ых) выбора.
  • Это позволяет вам легко просматривать журналы.
  • Он интегрируется с вашим тестовым бегуном
  • Он интегрируется с отчетами о покрытии кода (например, BullseyeCoverage w/С++ и Qt)
  • Будет ли он публиковать ваши файлы способом, разумным для ваших нужд.
  • При необходимости предоставит архив/хранилище файлов (например, pdbs и lib *.so.debug)
  • Если система CI не поддерживает функцию X, вам придется записать ее для каждой поддерживаемой ОС/системы.
  • Легко ли использовать систему CI/UI.

Я сделал это, используя CruiseControl, и большинство вещей было довольно легко. Я написал все в make или qmake и просто вызвал команду, которую мне нужно выполнить. Для интеграции unit test и покрытия кода я выводил материал в XML и преобразовывал его в нечто, поддерживаемое CruiseControl.

Моя рекомендация, взгляните на рекомендуемые системы CI и изучите их на основе вышеприведенных критериев.

Ответ 4

Я использую buildbot для этого. Я использую его в течение 4 лет, и я очень доволен этим.

Это приложение, написанное на python, которое работает на сервере и может управлять несколькими клиентами на разных ОС. В настоящее время я использую ведомые устройства Windows XP, Windows 7, Debian, Ubuntu и CentOS. Мои проекты - С++, а один из них (GUI конечного пользователя) выполнен в Python. Но мы также интегрировались с другими фреймворками для других функций, чем GUI.

Что действительно хорошо для buildbot, так это то, что он работает, запуская командные строки на ведомых. С этим вы можете делать все, что хотите. Даже в системах Windows для компиляции с помощью Visual Studio! Из этих командных строк вы получаете весь вывод, централизованный на сервере, и доступный.

Вы также можете найти альтернативы на этом сайте, который ссылается на многие из них. Отказ от ответственности: я посмотрел на него 3 года назад, я не знаю, все ли это точно.

Ответ 5

Хадсон или Дженкинс довольно хороши.

Ответ 6

Дженкинс действительно довольно популярен для разработки такого пользовательского сервиса, даже после всех этих лет, учитывая, что этому вопросу уже 7 лет.

Felgo также предлагает сервис непрерывной интеграции и доставки (CI/CD) для Qt. Оно использует. Он поддерживает настольные платформы, а также iOS, Android и встроенные цели. Полный набор функций описан в блоге.

Отказ от ответственности: я разработчик программного обеспечения в Felgo