Apple убивает TeamCity, Bitrise, Appcenter, Fastlane, Firebase, Sentry и иже с ними. Краткий обзор Xcode Cloud

    Заголовок конечно громковат, может не убивает, но уменьшит им доходы точно. Давайте кратко посмотрим что представила Apple на WWDC 2021, что такое Xcode Cloud?

    Xcode Cloud - это сервис CI/CD, встроенный в Xcode и разработанный специально для разработчиков Apple. Он ускоряет разработку и доставку приложений, объединяя облачные инструменты, которые помогают создавать приложения, параллельно запускать автоматические тесты, доставлять приложения тестировщикам, а также просматривать отзывы пользователей и управлять ими.

    Цикл разработки по мнению Apple заключается в этапах 1) Написать код 2) протестировать его 3) Интегрировать (в текущий) 4) Доставить до пользователя 5) Улучшить, и по новой. На то он и цикл. В принципе похоже на правду, так оно и есть.

    Если вы хоть раз настраивали CI/CD для iOS приложений, вы знаете примерно какие там шаги, ничего сложного, но это может включать в себя использование нескольких сервисов, генерации сертификатов и тд и тп.

    Теперь же Apple предлагает нам сделать это все не выходя из Xcode, давайте взглянем на процесс.

    Для начала нам нужно настроить первый workflow, а потом уже который будет пробегать при PR/MR (pull request/merge request) на main/develop ветку в системе контроля версий.

    I – CI/CD

    1) Жмем в новом Xcode при подключенном сервисе Xcode Cloud кнопку "создать workflow" и видим настройки

    Name - название воркфлоу, Start condition – когда запускать воркфлоу (например при изменении в main ветке), Environment - можно выбрать стабильную версию Xcode или новую бета версию, Actions - что собственно надо сделать, обычно выполнить archive и опубликовать например в TestFlight, после прогонки тестов, Post-Actions - что сделать после того как воркфлоу пройден, например написать в slack/telegram канал об этом событии

    2) Выбираем репозиторий где хранится наш код

    3) Выбираем с какой ветки собрать билд (при первой настройке)

    Собственно готово, теперь можем посмотреть как выглядит в Xcode место где можно управлять сборками, запускать их, пересобирать и тд

    Давайте теперь посмотрим как выглядит управление воркфлоу (выше показан путь настройки первой сборки)

    1) Выбираем "управление воркфлоу"

    2) Выбираем настройки (например при pull/merge request что-то выполнять)

    3) Выбираем какие тесты мы хотим прогнать в воркфлоу (UI или Unit тесты), я так понимаю речь именно про нативные тесты, про Appium и тд, пока ничего не известно.

    4) И выбираем отправить сообщение в Slack после того как воркфлоу пройден

    5) Готово

    II – Тесты

    1) Давайте посмотрим как выглядит интерфейс работы с тестами, мы видим тут тесты которые пройдены при сборке а также устройства на которых они прогонялись

    2) Посмотрим какие конкретно тесты прогнались на iPad Air, видим что тест кейс с Light mode, портретный режим, с Английским языком, далее видим какие конкретно тесты пройдены

    3) Ну и совсем чудеса, можно смотреть скриншоты пройденных тестов

    4) Можно также посмотреть какой тест упал, можно также пометить тест как Flaky (Флаки тест или другими словами тест неактуальный, который надо либо удалить либо переписать), для этого используется XCTExpectFailure (что в переводе логично видно по названию метода – ожидаемый фейл)

    Удобно.

    III - Работа с системой контроля версий (и переписка прямо в коде в Xcode)

    1) Изменения теперь видно еще нагляднее (привет всем кто пользуется визуальными штуками, а не через консоль при работе с git). Сверху мы видим наши локальные изменения (которые мы накодили) а снизу "висящие" pr/mr реквесты, которые можно посмотреть, и дать свой комментарий или approve (одобрение на слияние кода)

    2) Даже видно какой тест план для этой фичи, которая просится в главную ветку

    3) Переписка,комменты прямо в Xcode при pr/mr (а не на веб мордах gitlab/github/bitbucket и тд)

    В общем очень круто и удобно

    IV - Улучшения (Crashes/Сбои/Ошибки)

    1) Все краши/сбои теперь видно прямо в Xcode (а не в веб морде Firebase или Sentry), код приходит сразу символизированный (symbolized log), то есть человекопонятный с указанием что и как произошло

    2) А тестер (возможно и пользователь) может оставить комментарий при краше который вы сможете прочитать (и даже ответить!)

    3) Ну и самое интересное вы сможете кликнуть открыть место краша в проекте

    4) И вас за ручку проведут к вашему куску кода который натворил зло

    Послесловие

    Плюс ко всему Xcode Cloud обещает генерить сертификаты которые нужно автоматически, обновлять провижн (provision) файл тоже автоматически, судя по всему даже UDID теперь не надо будет собирать с инженеров по тестированию и заинтересованных менеджеров которые хотят смотреть на билд.

    В общем как по мне сервис выглядит очень интересно, но пока недоступен для всех. Понятно что видимо он еще в стадии разработки, но как все задумывается, это выглядит круто, и очень упростит разработку для iOS.

    Можете подать заявку на бета-тест здесь

    Сколько он будет стоить пока тоже неизвестно.

    И пока непонятно что с Android потому что обычно сервисы CI/CD используют сразу для двух платформ, так как приложения обычно тоже для двух платформ разрабатывают. Но может быть когда нибудь приложения для Android можно будет писать и в Xcode))

    Изображение и информацию брал из видеосессий WWDC 2021, кому интересно как это выглядит вот видео про Xcode Cloud.

    Комментарии 15

      +8

      И пока непонятно что с Android потому что обычно сервисы CI/CD используют сразу для двух платформ, так как приложения обычно тоже для двух платформ разрабатывают. Но может быть когда нибудь приложения для Android можно будет писать и в Xcode))

      а никак с андроидом. Епл живёт в своём мире и не замечает другие ОС. M$ уже 1 раз наступали на эти грабли и мы знаем чем это для них закончилось.

      Это всё выглядит логичным продолжением их Xcode Server и их покупкой BuddyBuild. Но как много людей пользуются этим?

        –3

        Какое отношение это имеет к упомянутому в заголовке no-sql серверу баз данных firebase?

          +6

          firebase это не просто бд (Firebase Realtime Database), а целая пачка сервисов. К примеру они предоставляют ферму андроид железок для тестов https://firebase.google.com/docs/test-lab/android/continuous

            +3
            в статье я имел виду подсервис Firebase Crashlytics который позволяет получать отчеты о сбоях в приложениях
              +1

              2 aposnov, Спасибо за уточнение и объяснение.
              Поставившим минусы — простите, больше не буду задавать вопросы.

            +3
            Краши и сейчас в органайзере Xcode можно увидеть и открыть место краша в проекте, точно также. Комменты добавились, да.
              +7

              Я бы сказал "Apple убивает Xcode"

              0
              А как же Юнити? При сборке проект весом в несколько ГБ экспортируется из юнити в xCode. И… эти несколько ГБ с локального компа нужно будет в облако выгружать?
                0

                У юнити есть свой клауд, который умеет всё то же самое уже лет 5.

                  0
                  Он дюже неудобен.
                –2
                Именно так должна выглядеть интегрированная среда разработки сегодня.
                Браво, Apple!
                0
                Будет ли возможность развернуть сей инструмент локально?

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое