В прошлой статье мы рассмотрели автоматизацию сборки мобильных приложений с помощью Bitrise, разобрались со сборкой Android- (и iOS-) приложения, подключили Xamarin Test Cloud, провели автоматическое UI-тестирование и внедрили HockeyApp для получения обратной связи. Сегодня мы продолжим погружение в мир инструментов Mobile DevOps, которые не просто ускоряют, но еще и заметно упрощают разработку мобильных приложений. На этот раз мы рассмотрим интегрированное решение Visual Studio Mobile Center.
Примечание: мы продолжаем серию публикаций полных версий статей из журнала Хакер. Орфография и пунктуация автора сохранены.
Начнем мы немного издалека и посмотрим на Mobile DevOps в историческом разрезе. Сами по себе смартфоны и планшеты вошли в нашу жизнь заметно быстрее, чем их шумные предки-пылесборники, и для многих людей на нашей планете уже давно стали основным способом подключения к цифровой реальности. Капитан Очевидность утверждает, что Mobile плотно войдет не только в жизнь обычных юзеров, но и в бизнес-процессы современных компаний по всему миру. Поэтому разработчику крутых приложений обязательно стоит присмотреться к практикам DevOps, чтобы не отстать от поезда.
Обзор Mobile Center
Корпорация Microsoft в недалеком прошлом упустила рынок мобильных экосистем, поэтому теперь всеми силами (и долларами) старается наверстать упущенное, предлагая разработчикам целую кучу различных SDK, сервисов и инструментов. Покупка Xamarin и HockeyApp позволила корпорации предложить рынку интегрированные инструменты для профессиональной разработки мобильных приложений вне зависимости от целевой платформы. Сам конвейер Visual Studio Mobile Center (далее VSMC) основан на уже знакомых нам сервисе аналитики и дистрибуции HockeyApp и облачной ферме устройств Xamarin Test Cloud.
Если рассматривать рынок инструментов разработки, то все идет к тому, что миром Mobile будут править Android + Java (или что там обещают вместо Java в будущем? Kotlin?), iOS + Swift, Xamarin и React Native. Все четыре стека уже поддерживаются из коробки в новом VSMC. А в будущем обещают добавить еще и Windows.
Mobile Center пока находится в стадии раннего Preview, поэтому возможности еще достаточно ограниченны и сам сервис не рекомендуется к использованию в production-окружении. Однако в VSMC уже доступны все основные элементы конвейера Mobile DevOps: сборка, тестирование, дистрибуция и аналитика (различные события и краши).
Приятное дополнение к VSMC — модули Tables и Identity, которые могут быть полезны, если ты планируешь использовать Azure в своих мобильных приложениях. Tables — это облачный MBaaS (mobile backend as a service), который позволит развернуть базу данных в облаке и в несколько строк кода получить к ней доступ из приложения. В Azure развернутся SQL Database и REST-сервер (на базе Azure App Services), настроенные для совместной работы и готовые к масштабированию и безотказному доступу. В реальных и больших проектах эта штука часто может быть излишней, однако для твоего стартапа или быстрого прототипа подойдет идеально. С помощью Identity можно будет легко авторизовать пользователей через Facebook, Google или Twitter. Авторизованные таким образом юзеры смогут получать доступ к данным из Tables, помеченным как требующие авторизации. И Tables, и Identity предоставляют базовую функциональность, которой может быть достаточно для небольших или простых проектов. Пара строк кода — и все работает.
Но сам по себе Mobile Center — это в первую очередь конвейер DevOps, поэтому перейдем к рассмотрению ключевой функциональности.
Билдим
Итак, у нас есть исходные коды проекта Navigation Drawer из набора стандартных примеров Android на Java. Заливаем их на GitHub (поддержка других сервисов будет добавлена в VSMC позже), создаем бесплатную учетку на mobile.azure.com и добавляем новое приложение.
Переходим в раздел Build, подключаем репозиторий GitHub и выбираем основной branch. После сборки мы можем скачать полученные APK и подробные логи. Все как у людей и без излишеств.
Из дополнительных опций сборки можно отметить возможность запуска Unit-тестов и автоматического уведомления бета-тестировщиков о готовности установочного пакета.
В будущем также обещают добавить поддержку репозиториев Bitbucket и Visual Studio Team Services. Для автоматических UI-тестов, правда, пока придется заливать сборку руками из консоли, о чем мы и поговорим далее.
Альтернатива VSMC на данном этапе
Если тебя интересует отдельная система для сборки проектов, то настоятельно рекомендуем познакомиться с Bitrise.io, о котором мы рассказывали.
Гоняем тесты
Как мы уже знаем, в VSMC интегрирован сервис Xamarin Test Cloud. Для нашего примера мы будем использовать написанный раньше скрипт на Calabash.
Для начала нам необходимо установить Node.js и Ruby плюс ряд дополнительных gems. Выдумывать ничего не придется, просто следуй инструкциям в Mobile Center. Перед тем как отправить приложение на тестирование, его нужно собрать командой calabash-android build [путь до apk].apk
в консоли. Результатом работы этой команды должна быть папка test_servers, содержащая корректно подписанный APK-файл. После сборки потребуется выполнить команду mobile-center test run. Через несколько минут мы увидим результаты тестирования и получим email-уведомление о завершении тестов.
Кстати, свои фермы для автоматизированного UI-тестирования приложений также представили Amazon и Google.
Отличий от оригинального Xamarin Test Cloud здесь немного: есть пошаговые скриншоты и мониторинг потребления ресурсов. Устройств много, но в VSMC Preview пока есть ограничение на количество одновременных запусков (одно устройство за один раз) и выделенного времени (до одного часа в день).
Альтернативы VSMC на данном этапе
Если ты ищешь отдельную облачную ферму устройств для автоматизированного UI-тестирования, то могу посоветовать посмотреть в сторону AWS Device Farm, Xamarin Test Cloud, Google Firebase Test Lab.
Анализируем и распространяем
В качестве подсистемы для сборки крашей и событий внутри VSMC используется сервис HockeyApp. Для интеграции SDK достаточно добавить новые зависимости к проекту и зарегистрировать обработчик крашей.
Сами краши можно смотреть в stack trace, а события — в статистике.
Альтернативы VSMC на данном этапе
Для более детального анализа поведения пользователей все-таки лучше использовать «Яндекс.Метрику», Google Analytics или Flurry, так как маркетологи предпочитают для своей работы эти сервисы.
Выводы
Итак, сегодня мы познакомились с универсальным и интегрированным конвейером Visual Studio Mobile Center. Если сравнивать с тем же Bitrise.io, интегрированные решения, с одной стороны, могут сильно упростить жизнь разработчикам мобильных приложений и ускорить внедрение инструментов DevOps в повседневную практику, но с другой — они не настолько гибки и функциональны, как DIY-конвейеры. В ближайшее время стоит ожидать появления большего числа интегрированных систем от других игроков. Если же программистский зуд или задачи проекта требуют своего конвейера, то выбор инструментария уже сейчас достаточно широк, включая различные open source проекты, поэтому выбирать надо исходя из требований и планов развития продукта.
Успешной тебе автоматизации! Будут вопросы — пиши в комментариях!
Об авторе
Вячеслав Черников — руководитель отдела разработки компании Binwell. В прошлом — один из Nokia Champion и Qt Certified Specialist, в настоящее время — специалист по платформам Xamarin и Azure. В сферу mobile пришел в 2005 году, с 2008 года занимается разработкой мобильных приложений: начинал с Symbian, Maemo, Meego, Windows Mobile, потом перешел на iOS, Android и Windows Phone.
Статьи Вячеслава вы также можете прочитать в блоге на Medium.
Другие статьи автора:
- Авторизация OAuth для Xamarin-приложений
- DevOps на службе человека
- Автоматизируем неавтоматизируемое, или про Xamarin в реальных проектах
- Удобный REST для Xamarin-приложений
- Быстрое создание MVP (minimum viable product) на базе Microsoft Azure и Xamarin.Forms
- Готовим Xamarin.Forms: настройка окружения и первые шаги
- Повышаем эффективность работы в Xamarin.Forms
- Работаем с состояниями экранов в Xamarin.Forms
- Подключаем Facebook SDK для Xamarin.Forms
- Подключаем ВКонтакте SDK для Xamarin.Forms
Напоминаем, что это полная версия статьи из журнала Хакер.