Наилучшая практика для настройки сервера автоматической сборки приложений для iphone? - PullRequest
43 голосов
/ 01 октября 2010

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

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

Все разработчики используют ноутбуки (которые будут отключены в одночасье), поэтому я подумываю приобрести для этого выделенный 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/

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

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

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

Спасибо!

Иосиф

Ответы [ 3 ]

14 голосов
/ 03 октября 2010

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 по этой причине.

6 голосов
/ 17 сентября 2012

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

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

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

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

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

0 голосов
/ 04 февраля 2014

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

Он может выполнять:

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

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

...