Существуют ли какие-либо бесплатные системы сборки с открытым исходным кодом, для которых вы можете предложить свой компьютер в качестве агента сборки?

Существуют ли какие-либо бесплатные системы сборки или системы с открытым исходным кодом, для которых вы можете предложить свой компьютер в качестве агента сборки? Я не сталкивался ни с одним, но мне нравится идея этого.

Цель

Настройте систему непрерывной интеграции (или, по крайней мере, ночную )сборку для определенного проекта с открытым исходным кодом, который необходимо независимо собрать на всех поддерживаемых платформах :Windows, MacOS X и Linux.

Требования

  1. Позволяет произвольным пользователям добровольно предлагать свой компьютер в качестве нового агента сборки для системы сборки.
  2. Поддерживает Windows, MacOS X,и системы Linux в качестве агентов сборки (, если это надлежащим образом поддерживается определением сборки ).
  3. Позволяет мне передавать результирующий вывод сборки (, например. обычно бинарные исполняемые файлы или библиотеки )обратно в центральное расположение.
  4. Система сборки может либо проверить, способен ли добровольный агент запустить определение сборки, либо автоматически установить необходимые инструменты для этого.
  5. Может отслеживать GitHub (или произвольный URL-адрес )на наличие новых коммитов (изменений ), чтобы запустить отправку сборки на доступные агенты сборки.
  6. Если нет доступных агентов сборки необходимого типа, сборка остается в очереди до тех пор, пока она не будет обработана (, хотя, возможно, будет удалена из очереди через несколько дней ).

Я знаю, что большей части этого можно добиться, настроив несколько инстансов Amazon EC2 с помощью Amazon Web Services Уровень бесплатного пользования , но:

  • Это бесплатно только в течение 12 месяцев
  • Он не предлагает экземпляры MacOS X

Где я взял идею

  1. JQuery TestSwarm:TestSwarm — это распределенная установка CI для выполнения тестов JavaScript в нескольких браузерах. Доступные браузеры предоставляются пользователями, добровольно предлагающими свои браузеры «присоединиться к рою» (, по сути, будучи захваченными/подключенными к рою и способными получать директивы для выполнения заданных наборов тестов по запросу.
  2. Проекты распределенных вычислений, такие как программное обеспечение Folding@Home Стэнфорда и инфраструктурная программа BOINC Беркли.
  3. Microsoft Team Foundation Server (TFS )Team Build :Хотя я обычно презираю TFS, его система Team Build делает в основном то, что я хочу, позволяя вам указывать пулы агентов сборки (сервера ), которые способны запускать заданное определение сборки. Большая разница между Team Build и тем, что я ищу, заключается в том, что Team Build [предположительно] использует только надежные,контролируемые серверы в качестве агентов сборки (по сравнению с серверами, предоставленными случайным образом из толпы -).

Известная проблема :Безопасность!

Хотя я бы хотел, чтобы процесс добровольного предоставления вашего собственного компьютера в качестве сервера сборки был таким же простым, как добровольное предоставление вашего браузера для TestSwarm, очевидно, что при предоставлении доступа к вашей реальной файловой системе и механизмам обработки команд существует огромный набор последствий для безопасности :

  • . Клиентские компьютеры (агенты сборки )захотят убедиться, что система сборки не пытается выполнить что-либо вредоносное на их добровольно предоставленном компьютере.
  • Система сборки должна гарантировать, что «ненадежные» клиентские компьютеры (агенты сборки )не будут создавать вредоносные выходные данные сборки (, например. использование взломанной версии GCC для создания вредоносных программ/вирусов -двоичных файлов ). Это огромная проблема, и ее, скорее всего, можно решить, установив в систему сборки собственное программное обеспечение (а-ля Folding@Home ), которое охватывает весь процесс сборки таким образом, чтобы агент сборки не не имеет никаких внешних входных данных для сборки (, например. не полагается на дополнительные инструменты, которые должен был установить пользователь, такие как компиляторы ). В противном случае система сборки должна была бы как минимум запросить, чтобы два разных агента сборки построили одни и те же двоичные файлы, чтобы результат можно было сравнить и проверить.

7
задан James M. Greene 25 June 2012 в 05:25
поделиться