Подтвердить что ты не робот

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

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

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

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

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

По крайней мере, для первой попытки я рассматриваю возможность использования простой оболочки script, выполняемой из 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?

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

Спасибо!

Джозеф

4b9b3361

Ответ 1

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

Вы можете играть с ним через ссылку "Тест-драйв" на странице Meet Hudson, чтобы понять, насколько легко это настроить. (Это одна из вещей, которая меня продала, с которой было очень легко начать работу, но все еще настраиваемо, расширяемо и достаточно мощно, чтобы мы расширялись в течение последних нескольких лет. Она заменила действительно кудрявую кучу рук- скринированные скрипты и программы, которые, несмотря на то, что я являюсь автором, я был очень рад видеть, что положен на отдых.)

У нас есть бэкэнд hudson, работающий на жестком Mac OSX-сервере, но нет причин, по которым вы не могли бы запустить его практически где угодно (linux, windows, mac).

Что касается его настройки для построения - это около 6 строк оболочки script в конфигурации проекта, в основном вызывающей 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 auth для нас.

Мы активно используем плагин Email-ext, и у вас есть плагин тайм-аут сборки и плагин контрольного трейла, так как есть много других люди, использующие систему, и некоторые из них не очень хорошо себя ведут. Мы коротко экспериментировали с Warnings плагин и Статический код Плагины анализа также должны получить те, которые используются для большего количества проектов (обычно у нас есть предупреждения как ошибки в сборках, но мы используем PC-Lint и другие инструменты для некоторых проектов; вывод данных агрегируется и отслеживается здесь очень хорошо). Наконец, все важные Chuck Norris и Эмоциональный Хадсон плагинов.

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

</Fanboy>

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

Ответ 2

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

Его продукт TeamCity от JetBrains доступен по адресу http://www.jetbrains.com/teamcity/

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

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

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

Ответ 3

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

Он может делать:

  • Сборка (+ проверка предупреждений)
  • Анализ (т.е. статический анализ клана)
  • Запустите тесты на iOS simulator + все подключенные к нему устройства с USB

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