Как лучше всего настроить сервер автоматической сборки для приложений iphone?

Я хочу настроить сервер автоматической ночной сборки для наших приложений для iphone и хочу получить совет о том, что работает, а что нет.

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

Все разработчики используют ноутбуки (которые будут отключены в одночасье), поэтому я подумываю о приобретении для этого специального Mac Mini.

Я не уверен, что мне нужно: стандартная Mac OS X или серверная версия.

По крайней мере, для первой попытки я подумываю использовать простой сценарий оболочки, запускаемый из crontab, для выполнения фактической работы. В будущем будет хорошо работать сервер полной непрерывной интеграции (Hudson и т. Д.).

Я уже нашел несколько статей с помощью поиска, хотя они довольно краткие:

http://nachbaur.com/blog/how-to-automate-your-iphone-app-builds-with-hudson

http://blog.jeffreyfredrick.com/2008/11/27/continuous-integration-for-iphonexcode-projects/

а также в этом вопросе stackoverflow есть полезная информация о программном обеспечении (хотя ему уже два года):

Непрерывная интеграция для проектов Xcode?

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

Спасибо!

Джозеф


person JosephH    schedule 01.10.2010    source источник
comment
Сервер Mac OS X не добавляет ничего особенного по поводу компиляции.   -  person Seth    schedule 02.10.2010
comment
@shader Похоже, вы удалили этот контент.   -  person ThomasW    schedule 06.02.2012


Ответы (3)


Hudson (или его форк Jenkins) действительно несложно настроить; это то, что мы используем внутри компании. Мы не просто запускаем из него сборки iphone - на самом деле, для сборок iphone настроен только один одинокий Mac mini, и это относительно недавнее дополнение. Некоторое время у нас было полдюжины других рабов для других платформ.

Вы можете поиграть с ним, перейдя по ссылке «Test Drive» на странице Познакомьтесь с Хадсоном страницу, чтобы понять, насколько легко ее настроить. (Это одна из тех вещей, которые мне понравились; начать работу с ним было действительно легко, но все же настраиваемым, расширяемым и достаточно мощным, чтобы мы продолжали расширяться в течение последних нескольких лет. Он заменил действительно громоздкую кучу ручных ... свернутые скрипты и программы, которые, несмотря на то, что я был автором, были очень счастливы, когда они были похоронены.)

У нас есть бэкэнд 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 и также плагины статического анализа кода, их необходимо использовать в большем количестве проектов (у нас обычно есть предупреждения как ошибки в сборках, но мы действительно используем PC-Lint и другие инструменты в некоторых проектах; агрегирование и отслеживание вывода здесь очень приятно). Наконец, очень важные Чак Норрис и Плагины Emotional Hudson.

В настоящее время мы не проводим модульные тесты (позор!) Ни на одной из сборок iphone, и мы просто используем обычную функцию «Архивировать артефакты», встроенную в hudson, для хранения сборок. Доступ к ним можно получить через авторизованных пользователей через веб-интерфейс Hudson. Я не сомневаюсь, что вам будет несложно запускать модульные тесты в рамках.

‹/Fanboy›

Наши единственные настоящие проблемы были связаны с AFP и SMB на Mac mini - ничего общего с Hudson, а просто с нашей внутренней сетевой инфраструктурой. И mini на мой вкус немного медленный - мы обычно запускаем довольно мощные ведомые сборки, исходя из теории, что быстрое выполнение автосборки - это хорошо. По этой причине в какой-то момент mini может быть подарен SSD.

person leander    schedule 03.10.2010
comment
Стоит отметить, что .zip, который hudson создает из своего веб-интерфейса, не подлежит отправке! Что-то о том, что информация о символической ссылке не сохраняется. Вы должны использовать Finder, чтобы создать свой окончательный zip-архив для отправки для магазина приложений - или выяснить, как сделать zip-архив в сценарии сборки, который имеет правильные параметры для сохранения ссылок и разрешений. - person leander; 02.02.2011
comment
Привет, Леандер, я только начинаю это настраивать. Я наткнулся на следующее сообщение в блоге и подумал, помогает ли это w. информация о символической ссылке не сохраняется: тихий -code.blogspot.com/2009/07/ - person nazbot; 09.05.2011

Я понимаю, что с момента последнего обновления этого потока прошло много времени, но с тех пор я столкнулся с новым сервером непрерывной интеграции (CI). Или на самом деле это не ново, но его интегрированная поддержка сборок Mac / IOS нова :)

Это продукт TeamCity от JetBrains, доступный по адресу http://www.jetbrains.com/teamcity/.

Мы успешно используем его на клиенте, над которым я работаю, для создания проектов Java, но мы также займемся настройкой для сборок IOS, поскольку это становится все большей частью нашего ассортимента продукции.

Его довольно легко настроить и он может работать на любой платформе, но buildagent должен работать на компьютере Mac.

Надеюсь это поможет :)

person Leif Bredgaard Honorė    schedule 17.09.2012

Одним из новых вариантов является Xcode 5 в сочетании с Mac OS X 10.9 (Mavericks) и OS X Server. OS X Server теперь имеет компонент сервера Xcode, который подходит для выполнения автоматических тестов.

Он может:

  1. Сборка (+ проверка предупреждений)
  2. Анализировать (т. Е. Статический анализ clang)
  3. Запустите тесты на симуляторе iOS + все подключенные устройства, подключенные к нему через USB

Для запуска тестов на устройствах он с огромным отрывом превосходит jenkins / hudson по простоте и легкости настройки. Однако сервер Xcode (начиная с Xcode 5.1) полностью не настраивается - если вы хотите добавить настраиваемое графическое отображение производительности / использования памяти / чего угодно, вы не можете - для такого рода мощности jenkins / Hudson намного лучше.

person JosephH    schedule 04.02.2014