- PVSM.RU - https://www.pvsm.ru -

Continuous Integration в XCode5

В пятой версии XCode появился Continuous Integration. Он работает через XCode службу OS X Server ($20, AppStore [1]).

XCode Service умеет все тоже что и любой Continuous Integration сервер, возможно чуть меньше. Огромный плюс — полная интеграция с XCode и свойственная Apple «работа из коробки». Я запустил авто-сборку проекта за полчаса, хотя раньше ни разу не настраивал CI сервер. И не нужно курить мануалы как правильно собирать приложение из командной строки, как включить эмулятор или запустить тесты на устройстве.

xcode continuos integration

XCode Service работу по автоматизации выполняют боты [2]. Бот

  • Забирает проект из GitHub или SVN.
  • Проводит статистический анализ кода.
  • Собирает проект, для изборки используются общие схемы [3], они создаются через XCode и хранятся в репозитории.
    Continuous Integration в XCode5
  • Выполняет Unit тесты, unit тесты также встроены в XCode, тесты можно выполнить на любом устройстве подключенном к CI серверу и на любом установленном эмуляторе.
    Continuous Integration в XCode5
  • Оповещает о проваленной сборке или тестировании все кто комитил в репозиторий.

Сборка проекта запускается по времени, вручную или после каждого коммита.

Подробная инструкция по установке на сайте Apple [4].

Настройка занимает 30 минут. Очень порадовало, что все работает из коробки и интегрировано. Юнит-тесты и боты создаются в XCode, там же красивые отчеты о выполнении тестов и сборки.

И пара полезный рецептов.

Выгрузка в Test Flight

В пункте Archive схемы добавляем примерно такой Post-Action

curl http://testflightapp.com/api/builds.json
-F file=${BUILD_ROOT}/Debug-iphoneos/${FULL_PRODUCT_NAME}
-F api_token='your_api_token'
-F team_token='your_team_token'
-F notes='This build was uploaded via the upload API'
-F notify=True
-F distribution_lists='Internal, QA'

UI-тестирование

К сожалению, автоматизированное тестирование UI через стандартный UIAutomation [5] нельзя запустить на build-сервере (ладно, вообще можно [6], но java script и его глюки сводят на нет преимущества).

Попробуем наладить UI-тестирование через KIF [7]


Подписывайтесь на наш хабра-блог [8]. Каждый четверг полезные статьи о мобильной разработке, маркетинге и бизнесе мобильной студии.

Автор: junk

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ios/47065

Ссылки в тексте:

[1] AppStore: https://itunes.apple.com/us/app/os-x-server/id714547929?mt=12

[2] боты: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/ConfigureBots/ConfigureBots.html#//apple_ref/doc/uid/TP40013292-CH9-SW1

[3] схемы: https://developer.apple.com/library/ios/recipes/xcode_help-scheme_editor/Articles/SchemeManage.html

[4] на сайте Apple: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/000-About_Continuous_Integration/about_continuous_integration.html

[5] UIAutomation: https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/UsingtheAutomationInstrument.html

[6] можно: http://stackoverflow.com/questions/4191945/can-the-ui-automation-instrument-be-run-from-the-command-line

[7] KIF: https://github.com/kif-framework/KIF

[8] хабра-блог: http://habrahabr.ru/company/touchinstinct/

[9] Источник: http://habrahabr.ru/post/199110/