Как перестать открывать вебуху App Store Connect и автоматизировать всё из терминала
Каждый, кто хоть раз выкатывал приложение в App Store, знает эту боль. Веб-интерфейс App Store Connect любит зависать, требовать повторной авторизации в самый неудобный момент и заставлять кликать мышкой ради банального добавления сборки в TestFlight.
Недавно я наткнулся на утилиту asc (App Store Connect CLI). Это консольный инструмент на Go, созданный специально для того, чтобы убрать браузер из рутины публикации iOS и macOS приложений.
Что представляет собой asc
Проект написан на Go, распространяется одним бинарником и работает на macOS, Linux и Windows. Главный плюс — инструмент изначально проектировался без интерактивных промптов. Ему не нужно подтверждение по нажатию Enter, если вы сами этого не попросите. Это делает его удобным для скриптов и пайплайнов в CI/CD.
Выходной формат подстраивается под окружение. Если запускать команды в терминале, утилита рисует таблицы. Если результат уходит в пайп или файл, она отдаёт чистый JSON.
Главные возможности на практике
Утилита закрывает практически все задачи, ради которых раньше приходилось ходить на сайт Apple.
Загрузка сборок и работа с TestFlight
Отправка .ipa или .pkg файла делается одной командой:
asc builds upload --app "123456789" --ipa "/path/to/MyApp.ipa"
После этого можно сразу привязать сборку к тестировщикам. Для команд, собирающих под macOS, поддерживается цепочка с загрузкой .pkg и добавлением версии в группу внутренних тестировщиков:
asc builds upload --app "123456789" --pkg "./build/MyMacApp.pkg" --version "1.2.3" --build-number "42" --wait --output json
asc builds add-groups --app "123456789" --build-number "42" --version "1.2.3" --platform MAC_OS --group "Internal Testers"
Прямо из консоли можно читать крэш-логи и отзывы пользователей TestFlight.
Управление метаданными и ASO
Если приложение локализовано на десяток языков, менять описания через веб-интерфейс — мучение. Утилита выгружает локализации в локальную директорию, дает отредактировать их и накатить обратно:
asc metadata init --dir "./metadata" --version "1.2.3" --locale "en-US"
asc metadata apply --app "123456789" --version "1.2.3" --dir "./metadata" --dry-run
Для ASO-оптимизации есть команда asc metadata keywords audit. Она проверяет дубли ключевых слов, повторы между локалями, пересечения с названием приложения и перерасход байтов.
Работа со скриншотами
Скриншоты можно загружать пачками из папок, задавая нужный тип устройства:
asc screenshots upload --version-localization "LOCALIZATION_ID" --path "./screenshots/en-US" --device-type "IPHONE_65" --replace
Авторизация без боли в CI/CD
В локальном окружении утилита может хранить ключи в системном Keychain. Но на CI-серверах (GitHub Actions, GitLab CI, Bitrise) Keychain часто недоступен. Разработчики предусмотрели флаг --bypass-keychain и загрузку конфигурации из файла или переменных окружения:
asc auth login \
--bypass-keychain \
--name "MyCIKey" \
--key-id "ABC123" \
--issuer-id "DEF456" \
--private-key /path/to/AuthKey.p8
Проверить валидность ключей перед запуском долгого билда можно специальной командой проверки:
asc auth doctor
Стоит ли внедрять
Если вы выпускаете одно приложение раз в год, веб-панели Apple может и хватить. Но для регулярных релизов, работы с несколькими локализациями или построения прозрачного CI/CD утилита экономит часы работы.
Проект активно развивается, собирает положительные отзывы мобильных разработчиков и легко встраивается в имеющиеся шелл-скрипты.
