В пятой версии XCode появился Continuous Integration. Он работает через XCode службу OS X Server ($20, AppStore).
XCode Service умеет все тоже что и любой Continuous Integration сервер, возможно чуть меньше. Огромный плюс — полная интеграция с XCode и свойственная Apple «работа из коробки». Я запустил авто-сборку проекта за полчаса, хотя раньше ни разу не настраивал CI сервер. И не нужно курить мануалы как правильно собирать приложение из командной строки, как включить эмулятор или запустить тесты на устройстве.
XCode Service работу по автоматизации выполняют боты. Бот
- Забирает проект из GitHub или SVN.
- Проводит статистический анализ кода.
- Собирает проект, для изборки используются общие схемы, они создаются через XCode и хранятся в репозитории.
- Выполняет Unit тесты, unit тесты также встроены в XCode, тесты можно выполнить на любом устройстве подключенном к CI серверу и на любом установленном эмуляторе.
- Оповещает о проваленной сборке или тестировании все кто комитил в репозиторий.
Сборка проекта запускается по времени, вручную или после каждого коммита.
Подробная инструкция по установке на сайте Apple.
Настройка занимает 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 нельзя запустить на build-сервере (ладно, вообще можно, но java script и его глюки сводят на нет преимущества).
Попробуем наладить UI-тестирование через KIF
Подписывайтесь на наш хабра-блог. Каждый четверг полезные статьи о мобильной разработке, маркетинге и бизнесе мобильной студии.
Автор: junk