Заголовок конечно громковат, может не убивает, но уменьшит им доходы точно. Давайте кратко посмотрим что представила Apple на WWDC 2021, что такое Xcode Cloud?
![](https://habrastorage.org/getpro/habr/upload_files/184/05c/08d/18405c08d42508fd95a87d7598ef20b9.png)
Xcode Cloud - это сервис CI/CD, встроенный в Xcode и разработанный специально для разработчиков Apple. Он ускоряет разработку и доставку приложений, объединяя облачные инструменты, которые помогают создавать приложения, параллельно запускать автоматические тесты, доставлять приложения тестировщикам, а также просматривать отзывы пользователей и управлять ими.
![](https://habrastorage.org/getpro/habr/upload_files/734/7ed/cf0/7347edcf020a8a9173264f0efaf94cf6.png)
Цикл разработки по мнению 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 канал об этом событии
![](https://habrastorage.org/getpro/habr/upload_files/623/a87/db9/623a87db9be95b5b751fa9a33a1414eb.png)
2) Выбираем репозиторий где хранится наш код
![](https://habrastorage.org/getpro/habr/upload_files/39b/f53/73e/39bf5373e5ab4e0f06a248a98b5e710d.png)
3) Выбираем с какой ветки собрать билд (при первой настройке)
![](https://habrastorage.org/getpro/habr/upload_files/243/ffb/42e/243ffb42ebebb00fb25be29841fde552.png)
Собственно готово, теперь можем посмотреть как выглядит в Xcode место где можно управлять сборками, запускать их, пересобирать и тд
![](https://habrastorage.org/getpro/habr/upload_files/ded/dc3/da3/deddc3da3f2cf2b372d54f60e1bfa54d.png)
Давайте теперь посмотрим как выглядит управление воркфлоу (выше показан путь настройки первой сборки)
1) Выбираем "управление воркфлоу"
![](https://habrastorage.org/getpro/habr/upload_files/9bf/6fd/35d/9bf6fd35d416256923c62837f7b69ecb.png)
2) Выбираем настройки (например при pull/merge request что-то выполнять)
![](https://habrastorage.org/getpro/habr/upload_files/5b8/47e/a6a/5b847ea6adc635687e2af3598950c6c2.png)
3) Выбираем какие тесты мы хотим прогнать в воркфлоу (UI или Unit тесты), я так понимаю речь именно про нативные тесты, про Appium и тд, пока ничего не известно.
![](https://habrastorage.org/getpro/habr/upload_files/bd5/f6e/ac7/bd5f6eac778082d09d14caba815a9531.png)
4) И выбираем отправить сообщение в Slack после того как воркфлоу пройден
![](https://habrastorage.org/getpro/habr/upload_files/b9f/590/273/b9f590273cd1a590fd9b6eb986f3d6b8.png)
5) Готово
![](https://habrastorage.org/getpro/habr/upload_files/455/b25/c44/455b25c44dffc551dd2e38c16b725e66.png)
II – Тесты
1) Давайте посмотрим как выглядит интерфейс работы с тестами, мы видим тут тесты которые пройдены при сборке а также устройства на которых они прогонялись
![](https://habrastorage.org/getpro/habr/upload_files/7bb/5cb/67f/7bb5cb67f8e9a6b99379353c4bab48e8.png)
2) Посмотрим какие конкретно тесты прогнались на iPad Air, видим что тест кейс с Light mode, портретный режим, с Английским языком, далее видим какие конкретно тесты пройдены
![](https://habrastorage.org/getpro/habr/upload_files/025/e2c/bca/025e2cbca307ea597d53101dec888893.png)
3) Ну и совсем чудеса, можно смотреть скриншоты пройденных тестов
![](https://habrastorage.org/getpro/habr/upload_files/d23/f20/4cb/d23f204cb97b6a9b51a4ccc353036798.png)
4) Можно также посмотреть какой тест упал, можно также пометить тест как Flaky (Флаки тест или другими словами тест неактуальный, который надо либо удалить либо переписать), для этого используется XCTExpectFailure (что в переводе логично видно по названию метода – ожидаемый фейл)
![](https://habrastorage.org/getpro/habr/upload_files/2cf/df8/206/2cfdf8206452b92009595d1b7ac82ee5.png)
Удобно.
III - Работа с системой контроля версий (и переписка прямо в коде в Xcode)
1) Изменения теперь видно еще нагляднее (привет всем кто пользуется визуальными штуками, а не через консоль при работе с git). Сверху мы видим наши локальные изменения (которые мы накодили) а снизу "висящие" pr/mr реквесты, которые можно посмотреть, и дать свой комментарий или approve (одобрение на слияние кода)
![](https://habrastorage.org/getpro/habr/upload_files/0dd/4ba/af8/0dd4baaf8495655991a4b859d813ec13.png)
2) Даже видно какой тест план для этой фичи, которая просится в главную ветку
![](https://habrastorage.org/getpro/habr/upload_files/66b/1fd/b2a/66b1fdb2a0d3987df8049f06de50af47.png)
3) Переписка,комменты прямо в Xcode при pr/mr (а не на веб мордах gitlab/github/bitbucket и тд)
![](https://habrastorage.org/getpro/habr/upload_files/f6e/cbb/8ad/f6ecbb8ad568c045ac3cb707b7d62987.png)
В общем очень круто и удобно
IV - Улучшения (Crashes/Сбои/Ошибки)
1) Все краши/сбои теперь видно прямо в Xcode (а не в веб морде Firebase или Sentry), код приходит сразу символизированный (symbolized log), то есть человекопонятный с указанием что и как произошло
![](https://habrastorage.org/getpro/habr/upload_files/b30/e06/73a/b30e0673a762d02de9bdff4beac3f746.png)
2) А тестер (возможно и пользователь) может оставить комментарий при краше который вы сможете прочитать (и даже ответить!)
![](https://habrastorage.org/getpro/habr/upload_files/cd6/ad1/668/cd6ad16687f360c006a9e312805e7166.png)
3) Ну и самое интересное вы сможете кликнуть открыть место краша в проекте
![](https://habrastorage.org/getpro/habr/upload_files/3f4/28c/bba/3f428cbbad597967869ae3cdb022083f.png)
4) И вас за ручку проведут к вашему куску кода который натворил зло
![](https://habrastorage.org/getpro/habr/upload_files/227/0a3/546/2270a35463d5422123785169efc2a4ca.png)
Послесловие
Плюс ко всему Xcode Cloud обещает генерить сертификаты которые нужно автоматически, обновлять провижн (provision) файл тоже автоматически, судя по всему даже UDID теперь не надо будет собирать с инженеров по тестированию и заинтересованных менеджеров которые хотят смотреть на билд.
В общем как по мне сервис выглядит очень интересно, но пока недоступен для всех. Понятно что видимо он еще в стадии разработки, но как все задумывается, это выглядит круто, и очень упростит разработку для iOS.
Можете подать заявку на бета-тест здесь
Сколько он будет стоить пока тоже неизвестно.
И пока непонятно что с Android потому что обычно сервисы CI/CD используют сразу для двух платформ, так как приложения обычно тоже для двух платформ разрабатывают. Но может быть когда нибудь приложения для Android можно будет писать и в Xcode))
Изображение и информацию брал из видеосессий WWDC 2021, кому интересно как это выглядит вот видео про Xcode Cloud.
pingwinator
а никак с андроидом. Епл живёт в своём мире и не замечает другие ОС. M$ уже 1 раз наступали на эти грабли и мы знаем чем это для них закончилось.
Это всё выглядит логичным продолжением их Xcode Server и их покупкой BuddyBuild. Но как много людей пользуются этим?