Continuous Integration в XCode5

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

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

    xcode continuos integration


    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. Он прозрачно встраивается в XCode Test Navigator и исполняется ботами.


    Подписывайтесь на наш хабра-блог. Каждый четверг полезные статьи о мобильной разработке, маркетинге и бизнесе мобильной студии.
    Touch Instinct
    89.08
    Разрабатываем мобильные приложения
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 16

      +4
      Xcode 5 мне кажется первым Xcode который реально сделали качественно. Переход на него не чреват обилием багов (некоторые, конечно, есть), добавлено много интересных фич, интерфейс стал более удобным. CI-решение от Apple радует, надо только разобраться, насколько это все функционально.

      Товарищи, поделитесь вашим подходом к автоматизированному тестированию obj-c проектов. Я вот решил взяться за ум и выбираю:
      1. «Родной» XCTest
      2. github.com/allending/Kiwi
      3. github.com/specta/specta + github.com/specta/expecta/
      4. github.com/kif-framework/KIF — UI testing
      5. github.com/erikdoe/ocmock — инструмент для мокинга

      Эти мне изначально не понравилось, но тоже пользуется популярностью:
      1. github.com/moredip/Frank
      2. github.com/pivotal/cedar


      Кстати, на OS X Server можно бесплатно получить промокод в iOS developer center.
        0
        Kiwi+KIF
          0
          А чем, если не секрет, не понравился Cedar?
          Я вот только им и пользуюсь.
            0
            Опыта использования ни одного из этих инструментов у меня нет, просто после ознакомления с простой и ясной документацией Kiwi процедура по установке и интеграции Cedar мне показалась чрезмерно усложненной.
              0
              Просто сравните их матчеры, а установка кедра — одна команда в терминале)
            +1
            Мы используем github.com/calabash/calabash-ios, который скоро станет частью уже упомянутого Frank-a.
            Один из плюсов в сравнении с KIF — кросс-платформеность. Есть поддержка Android github.com/calabash/calabash-android.
            К тому же не так давно Xamarin купил Less Painful вместе с основными разработчиками Calabash. Так что это плюс для тех, кто использует Xamarin.

            Тесты можно писать используя Cucumber, под капотом — Ruby, т.е. огромный выбор gem-ов для любых задач.
            +1
            Он работает через XCode службу OS X Server ($20, AppStore).
            Описание из App Store:
            Server is now an application you can add to Mavericks directly from the Mac App Store. Anyone can quickly and easily turn a Mac running Mavericks into a server that’s perfect for home offices, businesses, schools, developers, and hobbyists alike.
            Описание на английском
            File Sharing
            • File sharing for Mac, PC, and iPad
            • Standards-based SMB2, AFP, and WebDAV file services
            • Flexible file permissions
            • Spotlight searching

            Profile Manager
            • Mobile device management for Mac and iOS devices
            • Simplified management and deployment of iOS 7 and OS X Mavericks
            • Distribution of institution licensed Apps and Books purchased from the Volume Purchase Program
            • Web-based administration console
            • Self-service user portal for clearing passcodes, remote lock and wipe

            Caching Server
            • Speed up the download of software distributed by Apple
            • Locally cache Apps, Books, iTunes U, Software Updates and OS X Recovery images
            • Fault tolerant design with multi-server cache replication and load balancing
            • No client configuration required

            Xcode Server
            • Use Xcode 5 to create continuous integration bots that build, analyze, and test on any Mac running OS X Server
            • Configure bots to integrate at a specific time, or continually as code is committed to the repository
            • Automate testing of OS X and iOS apps, executing on multiple connected iOS devices
            • Host your own Git repositories on OS X Server, or connect to remote Git or Subversion hosts
            • Remotely access detailed integration summaries and nightly builds using the Web interface

            Time Machine
            • Provide a backup destination for Mac computers on your network
            • Monitor which computers have backed up, when they last backed up and size of backup
            • Set limits on the amount of Time Machine storage a user can use.

            Calendar Server
            • Share calendars, schedule meetings and events, and book conference rooms
            • Standards-based CalDAV server for access from Mac, iPad, iPhone and PC
            • View availability with free/busy lookups
            • Email invitations and push notifications

            Contacts Server
            • Synchronize contacts with Mac, iPad and iPhone
            • Allow multiple users to access and update contacts
            • Standards-based CardDAV server

            Wiki Server
            • Point-and-click page edit to change formatting, insert images, movies and attachments
            • Access controls
            • Tags and comments
            • Revision history
            • Document sharing
            • Quick Look previews

            Mail Server
            • Standards-based SMTP, IMAP and POP server
            • Push notifications
            • SSL encryption
            • Adaptive junk mail filtering
            • Virus detection and quarantine

            Virtual Private Network
            • Remote access for your network services
            • Encrypted VPN connections for Mac, iPad, iPhone and PC

            Xsan
            • Block-level SAN file sharing with concurrent read/write access
            • Xsan volume hosting and configuration
            • Volume management, storage pooling, stripping, and volume mapping
            • Real-time monitoring, graphs, and event notifications
            • Metadata controller failover and file system journaling

            Server App
            • Local and remote management
            • Users and group settings
            • View real-time graphs of server usage
            • Receive alerts on network changes, certificate expiration, storage usage, and more.

            Other great OS X Server features
            • NetInstall to automate OS X installations and upgrades across your network
            • Web server for hosting multiple websites
            • Messages server to encrypt instant messaging within your organization
            Описание на русском
            OS X Server — новое поколение серверного ПО Apple, созданное для устройств с OS X и iOS. OS X Server позволяет легко обмениваться файлами, планировать встречи, синхронизировать контакты, разрабатывать ПО, поддерживать собственный веб-сайт, публиковать вики-проекты, конфигурировать Mac, iPhone и iPad, получать удаленный доступ к сети и многое другое.

            Теперь ПО Server доступно для загрузки в Mavericks напрямую из App Store для Mac. Компьютер Mac под управлением Mavericks можно быстро и легко превратить в идеальный сервер для домашних офисов, компаний, учебных заведений и компьютерных энтузиастов.

            Общий доступ к файлам
            • Общий доступ к файлам для Mac, ПК и iPad.
            • Стандартные файловые службы SMB2, AFP и WebDAV.
            • Гибкая система прав доступа к файлам.
            • Поиск Spotlight.

            Менеджер профилей
            • Система управления мобильными устройствами для Mac и устройств с iOS.
            • Упрощенное управление и развертывание для iOS 7 и OS X Mavericks.
            • Распространение лицензированных программ и книг, приобретенных в рамках Программы оптовой закупки.
            • Консоль администрирования на основе веб-интерфейса.
            • Портал самообслуживания для очистки кодов-паролей, удаленной блокировки и стирания данных.

            Сервер кэширования
            • Ускорение загрузки ПО Apple.
            • Локальное кэширование программ, книг, материалов iTunes U, обновлений ПО и образов для восстановления OS X.
            • Устойчивая к сбоям архитектура с дублированием кэша на нескольких серверах и механизмом балансирования нагрузки.
            • Настройка клиентских устройств не требуется.

            Сервер Xcode
            • Xcode 5 позволяет создавать программы-роботы для непрерывной интеграции, сборки, анализа и тестирования на любом Mac под управлением OS X Server.
            • Программы-роботы могут выполнять интеграцию в заданное время или постоянно, по мере отправки кода в хранилище.
            • Автоматизируйте тестирование программ для OS X и iOS, запуская их на нескольких подключенных устройствах с iOS.
            • Создавайте собственные хранилища Git под управлением OS X Server или подключайтесь к удаленным хостам Git и системам управления версиями.
            • Удаленный доступ к подробным сводкам интеграции и сборки в ночное время через веб-интерфейс.

            Time Machine
            • Место для хранения резервных копий Mac в вашей сети.
            • Отслеживайте, для каких компьютеров выполнено резервное копирование, когда оно выполнено в последний раз и каков размер резервной копии.
            • Задавайте объемы хранилища Time Machine для каждого пользователя.

            Сервер календарей
            • Общие календари, планирование встреч и событий, бронирование конференц-залов.
            • Сервер CalDAV, доступный с Mac, iPad, iPhone и ПК с Windows.
            • Просмотр доступности пользователей и поиск по статусам «свободен/занят».

            Сервер контактов
            • Синхронизация контактов с Mac, iPad и iPhone.
            • Возможность открытия и обновления контактов несколькими пользователями.
            • Сервер CardDAV.

            Вики-сервер
            • Редактор страниц с функциями мгновенного форматирования, добавления изображений, видео и вложений.
            • Инструменты контроля доступа.
            • Теги и комментарии.
            • История правок.

            Почтовый сервер
            • Сервер на основе SMTP, IMAP и POP.
            • Активные уведомления.
            • Шифрование SSL.

            Виртуальная частная сеть (VPN)
            • Безопасный удаленный доступ к сетевым службам.
            • Соединения VPN для Mac, iPad, iPhone и ПК с Windows.

            Xsan
            • Общий доступ к файлам SAN на уровне блоков с одновременным доступом для чтения/записи.
            • Размещение и конфигурирование томов Xsan.
            • Управление томами, пулы хранения, распределение данных и сопоставление томов.
            • Отслеживание, графики и уведомления о событиях в реальном времени.

            Программа Server
            • Локальное и удаленное управление.
            • Настройки пользователей и групп.
            • Графики использования сервера в режиме реального времени.
            • Уведомления об изменениях в сети, истечении сертификатов, использовании хранилища и др.
            Всегда думал, что это серверная версия ОС, а это теперь приложение, которое можно даже на макбук установить!
              +2
              Ага, еще со времен льва (10.7). Отдельной серверной ОС нет, серверные компоненты можно поставить из магазина.
                +1
                А еще оно бесплатно для разработчиков с оплаченными $100, в dev-центре есть redeem-код :)
                  0
                  Блин 5 минут назад купил(
                0
                Жаль вот с проектами на CocoaPods сложно это подружить :(
                Пока остаюсь на Jenkins.
                  0
                  почему сложно подружить?
                    +1
                    Было где-то в гуглогруппе CocoaPods обсуждение. Придется хранить в vcs сгенеренный xcworkspace и (возможно) саму папку Pods.

                    Ну и «pod install» придется выполнять в pre-actions. Но pre-action не завершит билд с ошибкой, если что-то пойдет не так.

                    В общем, настроить можно, конечно, но уже не just works, как хотелось бы.
                      0
                      спасибо, будем ждать CocoaPods от Apple
                        0
                        В принципе, достаточно будет возможности XCode Bots делать произвольный preprocessing после чекаута из VCS но перед сборкой с возможностью уронить билд в случае проблем.

                        groups.google.com/forum/#!topic/cocoapods/eYL8QB3XjyQ вот один из тредов, там активно отсылают радары на этот счет :)
                  0
                  Реквестирую статью XCode CI Server + KIF

                  Only users with full accounts can post comments. Log in, please.