Hudson (или его форк Jenkins ) действительно не сложно настроить; это то, что мы используем внутри. Мы не просто запускаем сборки iphone с него - на самом деле, только один одиночный Mac Mini настроен для сборок iphone, и это относительно недавнее дополнение. У нас было полдюжины других рабов для других платформ в течение некоторого времени.
Вы можете поиграть с ним по ссылке «Тест-драйв» на странице Meet Hudson , чтобы понять, как легко ее настроить. (Это одна из вещей, которые меня продали; это было действительно легко начать, но все же настраиваемо, расширяемо и достаточно мощно, чтобы мы могли расширяться в течение последних нескольких лет. Это заменило действительно грязную кучу рук. Свернутые сценарии и программы, которые, несмотря на то, что я был автором, я был очень рад видеть положенным на отдых.)
У нас есть серверная часть hudson, работающая на мощном сервере Mac OSX, но нет никаких причин, по которым вы не можете запускать его практически везде (linux, windows, mac).
Что касается его настройки для сборки - это около 6 строк сценария оболочки в конфигурации проекта, в основном вызывая xcodebuild
и передавая ему -project
и -configuration
аргументы.
Пример:
cd ${WORKSPACE}/Engineering/
set -e
set -v
xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution clean
xcodebuild -project foo.xcodeproj -alltargets -configuration Release clean
xcodebuild -project foo.xcodeproj -alltargets -configuration Debug clean
xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution
xcodebuild -project foo.xcodeproj -alltargets -configuration Release
xcodebuild -project foo.xcodeproj -alltargets -configuration Debug
Мы еще не настроили ведомое устройство для работы в качестве службы - это в списке TODO. На данный момент мы просто запускаем его через JNLP всякий раз, когда перезагружаем мини, на которых он включен.
Хранилище - SVN, а мастер hudson позаботится о том, чтобы мы запомнили нам информацию об аутентификации https.
Мы активно используем плагин Email-ext , и у нас есть плагин для тайм-аута сборки и плагин контрольного журнала, поскольку многие другие используют систему, а некоторые сборки ведут себя плохо , Мы вкратце экспериментировали с плагином Warnings и плагинов Static Code Analysis , также необходимо использовать их в других проектах (у нас обычно есть предупреждения об ошибках в сборках, но мы делаем используйте PC-Lint и другие инструменты в некоторых проектах; очень удобно собирать и отслеживать выходные данные). И, наконец, важнейшие плагины Chuck Norris и Emotional Hudson .
В настоящее время мы не запускаем юнит-тесты (позор!) Ни на одной из сборок iphone, и мы просто используем обычную функциональность «Архивировать артефакты», встроенную в hudson, для хранения сборок. Доступ к ним можно получить через авторизованных пользователей через веб-интерфейс hudson. Я не сомневаюсь, что вам не составит труда запустить свои модульные тесты в рамках.
Наши единственные реальные проблемы были связаны с AFP и SMB на Mac mini - это вообще не имеет ничего общего с Hudson, а только с нашей внутренней сетевой инфраструктурой. И мини немного медленный на мой вкус - мы обычно запускаем довольно нахальных сборщиков, основанных на теории о том, что быстрое выполнение автоматического построения - это хорошо. По этой причине мини может быть подарен SSD по этой причине.