Как перестать кликать в App Store Connect и начать жить
Помните то чувство, когда нужно срочно выкатить хотфикс, а сайт App Store Connect решает «прилегнуть» или просто медленно грузит каждую страницу? Или когда нужно загрузить скриншоты для десяти локализаций, и вы понимаете, что следующие два часа пройдут в однообразных кликах мышкой. Кажется, Apple делает всё, чтобы консоль управления приложениями оставалась максимально неповоротливой.
Недавно я наткнулся на проект App Store Connect CLI (или просто asc). Это консольная утилита, написанная на Go, которая общается с официальным API Apple. Она делает ровно то, что мы все ждем от нормальных инструментов: автоматизирует рутину, работает быстро и не требует открывать браузер.
Что это вообще такое
Если коротко, это швейцарский нож для iOS-разработчика или DevOps-инженера. Вместо того чтобы вручную создавать группы тестировщиков или проверять статус сборки, вы просто пишете команду в терминале.
Проект подкупает своей легкостью. В отличие от тяжеловесного Fastlane, который иногда напоминает космический корабль со сложной конфигурацией, asc ощущается как нативный инструмент. Он не пытается перехватить на себя всё управление проектом, а просто дает удобный интерфейс к API.
Чем он полезен на практике
Я выделил несколько сценариев, где asc экономит кучу времени и нервов.
Управление сборками и TestFlight
Самая частая задача — узнать, прошла ли сборка обработку и можно ли ее раздавать тестерам. Вместо обновления страницы в браузере, можно запустить воркер:
asc fields list --app "123456789" --output table
А если нужно посмотреть отзывы из TestFlight или логи падений, для этого есть отдельные команды. Например, список крэшей можно получить одной строкой:
asc testflight crashes list --app "123456789" --sort -createdDate --limit 10
Скриншоты без боли
Загрузка скриншотов — это отдельный круг ада. В asc есть интересная фича: планирование и применение скриншотов через локальные директории. Вы можете подготовить структуру папок, проверить её через --dry-run и отправить всё в Apple одной командой. Кстати, для рендеринга рамок устройств утилита использует Koubou, что гарантирует предсказуемый результат.
Публикация в один присест
Команда asc publish appstore объединяет загрузку IPA-файла, привязку к версии, установку номера сборки и отправку на проверку. Если вы используете CI/CD, это отличный способ заменить громоздкие скрипты на одну понятную команду.
Технические нюансы и установка
Инструмент написан на Go, что дает ему два преимущества: он работает невероятно быстро и поставляется в виде одного бинарника. Установка на macOS сводится к знакомому:
brew install asc
Для Windows и Linux тоже есть готовые сборки, хотя основная аудитория проекта, очевидно, сидит на маках.
Авторизация
Работать с API Apple без ключей нельзя. Вам понадобится создать API Key в панели App Store Connect (раздел Users and Access -> Integrations). После этого asc предложит сохранить данные в системном брелоке (Keychain) или в конфиге, если вы запускаете его на CI-сервере.
Пример входа для локальной машины:
asc auth login \
--name "MyApp" \
--key-id "ABC123" \
--issuer-id "DEF456" \
--private-key /path/to/AuthKey.p8 \
--network
Умный вывод данных
Приятная деталь: утилита понимает, куда она выводит данные. Если вы работаете в терминале, asc отрисует красивые таблицы. Но если вы перенаправляете вывод в файл или пайп (например, asc apps list > apps.json), она автоматически переключится на JSON. Это очень удобно для тех, кто любит обрабатывать данные через jq.
Стоит ли пробовать
Если вы работаете над одним приложением и обновляете его раз в полгода, возможно, вы не почувствуете всей прелести автоматизации. Но если у вас несколько проектов, активное тестирование в TestFlight или вы настраиваете CI/CD — App Store Connect CLI станет отличной находкой.
Проект еще развивается, некоторые команды помечены как экспериментальные, но база работает очень стабильно. Он не заменяет Xcode, но избавляет от необходимости заходить на сайт Apple Connect, что само по себе уже отличный результат.
Попробовать его стоит хотя бы ради того, чтобы увидеть, насколько отзывчивым может быть интерфейс к сервисам Apple, если убрать из уравнения тяжелый веб-интерфейс.
