Есть ли инструмент для кросс-платформенной непрерывной интеграции (С++ Win32 и linux)

Я посмотрел еще пару вопросов на SO - и не совсем уверен, что они отвечают на этот вопрос.

Мы создаем приложения на С++ для Win32 и Linux. Сейчас у нас есть несколько скриптов (bat файлы для win32), которые запускаются по расписанию, чтобы делать сборки.

Мы хотели бы иметь CI для наших проектов, но я бы хотел иметь только один сервер CI, который будет работать на обеих платформах. Интеграция с SVN важна.

Возможно ли, чтобы одна конфигурация/один продукт/сервер CI делали это?

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

Ответы

Ответ 1

Возможно, вам захочется пойти в Hudson или Jenkins. Хотя в основном для проектов на основе Java, вы можете настроить их в соответствии с вашими потребностями. Они интегрируются с SVN плавно, плюс вы можете использовать функцию создания нескольких шагов для вызова ваших (существующих) пакетных файлов и дальнейшего процесса.

Ответ 2

Buildbot - это, безусловно, один инструмент для поиска - http://buildbot.net/trac. Центральный сервер, который контролирует все проекты и уведомляет агентов о новых задачах, поэтому вы можете использовать любую среду, в которой вы действительно нуждаетесь, без настройки среды перекрестной компиляции.

Вы также можете посмотреть Круиз-контроль @http://cruisecontrol.sourceforge.net. Хотя похоже, что он больше ориентирован на построение java, вы можете сделать с ним довольно много. У меня есть настройка, которая строит linux arm и i386 двоичные файлы и упаковывает их в debs и поддерживает репозиторий debian из результатов сборки - запускает unittests и всевозможные вещи в коде.

Но то, что я действительно хотел сказать, заключается в том, что в основном все программное обеспечение сервера ci, которое я использовал, в основном, это просто "планировщики задач", и вам все равно нужно самостоятельно создавать/настраивать среду сборки, которая - в мультиплатформенных сценариях по крайней мере - большие задачи, которые настраивают программное обеспечение, выполняющее сборки, и выводят из них хорошие отчеты.

Ответ 3

TeamCity может запускать агенты сборки на разных платформах, например, один агент сборки в Windows и один в Linux. Доступна конфигурация, чтобы указать, какие агенты сборки, к которым каждая сборка переходит.

TeamCity не является бесплатным, как в речи, но есть бесплатная, как в пивной версии (Professional Edition) с некоторыми ограничениями (3 агента сборки, 20 пользователей, 20 конфигураций сборки).

Ответ 4

Мы используем Zed Builds and Bugs для этого, и он отлично работает для нас. Там есть один центральный сервер, на котором вы настраиваете определение сборки. Затем для каждого "шага" в полной сборке вы можете определить, на каком сервере будет выполняться "шаг". У нас есть шаги, которые выполняются через: Win32, Linux64, Linux32, HP, AIX, Solaris и даже шаги, которые вытесняются по всему миру для удаленного выполнения.

Каждый из шагов может быть настроен для параллельного или последовательного запуска, поэтому, когда HP, AIX, Solaris и Linux все делают то же самое, все они могут работать параллельно, и последующая проверка Win32 будет ждать все заканчивается, прежде чем продолжить.

Вы также можете настроить процессы сборки дочерних элементов, а затем запустить их из сборки "master", чтобы вы могли создавать более сложные потоки сборки, которые будут выполняться независимо друг от друга, но все связаны друг с другом с помощью определения основной сборки.

Это не бесплатно, но количество времени, которое оно нам спасло (в частности, я), многократно оплачивало стоимость программного обеспечения.