Есть ли инструмент для кросс-платформенной непрерывной интеграции (С++ 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", чтобы вы могли создавать более сложные потоки сборки, которые будут выполняться независимо друг от друга, но все связаны друг с другом с помощью определения основной сборки.

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