Codemagic — это удобный способ собирать и отправлять iOS-приложения в App Store Connect через CI/CD, без необходимости каждый раз выполнять весь процесс вручную через Xcode на основном рабочем устройстве. Такой подход особенно полезен, если вы хотите автоматизировать публикацию, упростить повторные сборки и минимизировать ручные действия.
Ещё один плюс такого сценария — выстраивание более аккуратного процесса работы с Apple Developer аккаунтом. Если задача состоит в том, чтобы максимально разделять рабочее окружение и не создавать лишних связей между аккаунтами, авторизовывать Apple Developer аккаунт прямо в Xcode крайне нежелательно. Вместо этого можно вынести сборку и отправку билда в отдельный CI/CD-процесс через Codemagic.
В этой статье мы покажем весь путь целиком: от подготовки Xcode-проекта до появления нового билда в App Store Connect. В качестве примера используем обычный iOS-проект, GitHub-репозиторий и Personal-аккаунт Codemagic. Для такого сценария бесплатного тарифа Codemagic обычно достаточно.
Если вам удобнее не читать, а смотреть процесс пошагово на экране, откройте наше видео на YouTube. Там весь сценарий показан на реальном примере и в той же логике, что и в статье: https://www.youtube.com/watch?v=lbAM75jt6Sk.
Что понадобится перед началом
Перед настройкой Codemagic подготовьте базовые вещи:
- готовый Xcode-проект, который уже запускается без ошибок;
- GitHub-репозиторий, куда можно запушить проект;
- приложение, заранее созданное в App Store Connect;
- Apple Developer аккаунт с доступом к созданию App Store Connect API key;
- email, на который вы зарегистрируете аккаунт Codemagic.
Важно, чтобы Bundle Identifier в проекте совпадал с Bundle ID приложения в App Store Connect. Без этого автоматическая публикация не будет работать корректно.
Подготовка Xcode-проекта
Начинать нужно с самого проекта. Перед загрузкой убедитесь, что приложение полностью готово, нормально запускается на симуляторе или реальном устройстве и не содержит критических ошибок, которые проявятся уже после начала сборки в CI/CD.
Также до старта проверьте три ключевых параметра: Bundle Identifier, Version и Build. Bundle Identifier должен соответствовать нужному приложению в App Store Connect, а значения Version и Build должны быть выше, чем у последнего билда, который уже был загружен в аккаунт.
После этого нужно подготовить SSH-ключ, который понадобится для дальнейшей конфигурации. Откройте Terminal и сгенерируйте новый RSA-ключ командой:
ssh-keygen -t rsa -b 2048 -m PEM -f ~/Desktop/ios_distribution_private_key -q -N ""
После выполнения команды на рабочем столе появится файл ios_distribution_private_key. Именно его содержимое понадобится чуть позже для вставки в конфигурацию Codemagic. Сам файл лучше сразу сохранить и не удалять до окончания настройки.
Возвращаемся к проекту. В корне проекта создайте файл codemagic.yaml. Это основной конфигурационный файл, по которому Codemagic будет понимать, как именно собирать приложение, как настраивать code signing и куда отправлять готовый билд.
Дальше вставьте в codemagic.yaml заранее подготовленную конфигурацию. Внутри неё отдельно обратите внимание на блок CERTIFICATE_PRIVATE_KEY. Именно сюда нужно вставить содержимое созданного RSA-ключа.
Откройте файл ios_distribution_private_key, полностью скопируйте его содержимое — от BEGIN RSA PRIVATE KEY до END RSA PRIVATE KEY — и вставьте его в блок CERTIFICATE_PRIVATE_KEY внутри codemagic.yaml. После этого сохраните файл.
Когда конфигурация готова, запушьте весь проект вместе с codemagic.yaml в GitHub. После этого можно переходить к созданию токена доступа для репозитория.
Создание GitHub Personal Access Token
Чтобы Codemagic получил доступ к приватному GitHub-репозиторию, понадобится Personal Access Token. Создавать его лучше заранее, до регистрации и подключения репозитория в Codemagic.
Для начала откройте GitHub, нажмите на иконку профиля и перейдите в Settings.
Дальше откройте раздел Credentials, а затем перейдите в Personal access tokens (classic).
Либо, если вы уже находитесь внутри раздела токенов, нажмите Generate new token и выберите вариант Generate new token (classic).
В настройках нового токена в поле Note можно указать, например, codemagic. В качестве срока действия в нашем примере используется вариант без ограничения по времени. По правам обязательно включите repo, а также дополнительно активируйте workflow.
После создания GitHub покажет токен только один раз. Поэтому обязательно сразу сохраните его в безопасное место. Этот токен понадобится уже на следующем этапе, когда мы будем подключать репозиторий к Codemagic.
Удаление User Data Xcode перед публикацией
Мы уже упоминали, что в рабочий Xcode не стоит авторизовывать Apple Developer аккаунт, а во время разработки не нужно выбирать Team для приложения. Но перед тем как переходить к сборке и публикации, стоит сделать ещё один шаг: убрать локальные пользовательские данные Xcode из Git и добавить их в исключения.
Даже если Apple Developer аккаунт никогда не использовался внутри Xcode, в проекте могут оставаться каталоги xcuserdata с локальными данными пользователя. Чтобы они не попадали в GitHub, их нужно убрать из отслеживаемых файлов и сразу добавить соответствующие пути в .gitignore. Тогда повторять эту операцию перед каждой следующей сборкой не придётся.
Для начала откройте корень проекта через Finder. Нажмите правой кнопкой на файл проекта с расширением .xcodeproj и выберите New Terminal at Folder.
В открывшемся Terminal уберите пользовательские каталоги Xcode из Git-индекса:
git rm -r --cached xcuserdata
git rm -r --cached project.xcworkspace/xcuserdata
После этого вернитесь на уровень корня проекта. Если файла .gitignore ещё нет, создайте его через Terminal:
cd ..
nano .gitignore
В .gitignore добавьте следующие строки:
*.xcodeproj/xcuserdata/
*.xcodeproj/project.xcworkspace/xcuserdata/
Если .gitignore уже существует, создавать новый файл не нужно - просто добавьте в него эти исключения. При работе через nano сохраните изменения сочетанием Control + X, затем нажмите Y и Enter.
Теперь зафиксируйте изменения в Git и отправьте их в репозиторий:
git add .
git commit -m "remove user data"
git push
После этого xcuserdata и данные из project.xcworkspace/xcuserdata не должны попадать в следующие коммиты. Проект можно дальше использовать для настройки Codemagic и последующей сборки через CI/CD.
Создание App Store Connect API key
Теперь переходим к Apple-части настройки. На этом этапе приложение уже должно быть создано в App Store Connect, а его Bundle ID должен совпадать с тем, который используется в Xcode-проекте.
Откройте App Store Connect и перейдите в Users and Access. Затем откройте вкладку Integrations, а в левом меню выберите App Store Connect API.
Если активного ключа для этой задачи ещё нет, нажмите на кнопку с плюсом и создайте новый API key.
Если это первый API key в аккаунте, Apple может дополнительно запросить подтверждение доступа к API. Это нормальное поведение. В окне создания ключа укажите название — например, codemagic — и выберите подходящий уровень доступа. Для типового сценария загрузки билда обычно используется доступ, достаточный для работы с приложением и сборкой.
После создания ключа сохраните три вещи:
Issuer ID;Key ID;- скачанный
.p8файл.
Здесь есть важный момент: .p8 файл можно скачать только один раз. Если вы его не сохраните, потом придётся выпускать новый ключ. Поэтому лучше сразу положить его в отдельную защищённую папку.
Регистрация в Codemagic и подключение GitHub-репозитория
Когда GitHub token и App Store Connect API key готовы, можно переходить к Codemagic.
Откройте сайт Codemagic и начните регистрацию, нажав Sign up.
Введите email, подтвердите регистрацию и введите код, который придёт на почту.
После подтверждения Codemagic предложит выбрать формат использования сервиса. Для нашего примера подойдёт Individual.
Дальше запускается первоначальная настройка. На этапе Connect your code выберите вариант ручного подключения репозитория через Add URL manually.
После этого укажите URL GitHub-репозитория, ниже впишите username GitHub-аккаунта и вставьте сохранённый Personal Access Token. Если репозиторий приватный, чекбокс Public repository отмечать не нужно. Затем подтвердите выбор репозитория.
Иногда Codemagic не определяет тип проекта автоматически. В таком случае нажмите Set type manually.
Дальше вручную выберите тип проекта iOS и завершите создание приложения.
После завершения первоначального онбординга приложение появится в списке приложений Codemagic. При необходимости откройте его через Applications и завершите оставшиеся шаги настройки.
Когда всё сделано правильно, Codemagic подтянет репозиторий и увидит файл codemagic.yaml. Обычно после этого внутри проекта уже будет отображаться сама конфигурация, а подключение репозитория завершится без ошибок.
Подключение Apple Developer аккаунта к Codemagic
Следующий этап — дать Codemagic доступ к Apple Developer аккаунту через App Store Connect API key.
В Codemagic откройте Settings, раскройте блок Integrations, найдите строку Developer Portal и нажмите Connect.
В форме подключения укажите название ключа — например, codemagic. Затем вставьте сохранённый Issuer ID, ниже добавьте Key ID, а в поле API key загрузите скачанный .p8 файл.
После сохранения проверьте, что ключ появился в списке подключённых и определяется как активный. Это значит, что интеграция с Apple Developer Portal подключена корректно.
На этом этапе у Codemagic уже есть и доступ к GitHub-репозиторию, и подключение к Apple Developer аккаунту. Теперь можно переходить к самой сборке.
Запуск сборки через Codemagic
Откройте нужное приложение в Codemagic. Если репозиторий и конфигурация уже успешно подтянулись, внутри проекта будет доступна кнопка Start your first build или Start new build.
Нажмите на кнопку запуска и проверьте параметры. Обычно здесь нужно выбрать нужную ветку — например, main — и workflow из файла codemagic.yaml. В нашем случае workflow называется Build.
После подтверждения сборка начнётся автоматически. Сначала Codemagic подготовит build machine, затем скачает исходники из GitHub, настроит окружение, получит signing files, применит code signing и соберёт готовый IPA-файл.
Когда workflow завершится без ошибок, рядом с приложением появится зелёный индикатор успешной сборки, а в логе будет видно, что все этапы отработали корректно.
Именно на этом этапе Codemagic автоматически выполняет всю тяжёлую часть процесса: клонирует проект, использует подключённый Apple Developer аккаунт, получает необходимые signing files, собирает IPA и отправляет билд в App Store Connect.
Проверка билда в App Store Connect
После успешной сборки откройте App Store Connect и проверьте нужное приложение. Через некоторое время новый билд появится в списке сборок и станет доступен для дальнейших действий — например, для TestFlight или следующего релиза в App Store.
Если рядом с новым билдом вы видите статус вроде Missing Compliance, это не означает, что Codemagic отработал неправильно. Обычно это означает, что Apple просит отдельно заполнить информацию по export compliance. В таком случае откройте Manage и пройдите стандартную форму. После этого билд можно будет использовать дальше.
Что делать при следующих сборках
После первой настройки весь процесс становится намного проще. Повторно создавать ключи, подключать GitHub и заново настраивать Codemagic уже не нужно.
Для следующей загрузки обычно достаточно:
- обновить
VersionилиBuildв Xcode-проекте; - при необходимости внести изменения в код;
- запушить обновлённый проект в GitHub;
- снова открыть Codemagic и запустить новую сборку.
Если связка GitHub + Codemagic + App Store Connect API key уже работает, все последующие билды отправляются в App Store Connect гораздо быстрее и удобнее, чем при ручной сборке каждый раз.
Итог
Итак, мы полностью разобрали процесс загрузки iOS-приложения в App Store Connect через Codemagic.
Сначала подготовили Xcode-проект: проверили Bundle Identifier, Version и Build, сгенерировали RSA-ключ и добавили его в codemagic.yaml. Затем создали GitHub Personal Access Token и выпустили App Store Connect API key. После этого зарегистрировались в Codemagic, подключили репозиторий, добавили интеграцию с Apple Developer аккаунтом и запустили автоматическую сборку.
На первый взгляд шагов действительно много, но большая часть этой настройки выполняется только один раз. После этого Codemagic превращается в удобный инструмент, через который можно быстро собирать и загружать новые версии iOS-приложения без постоянной ручной работы в Xcode.
Если вам удобнее смотреть, а не читать, вернитесь к нашему видеоразбору: https://www.youtube.com/watch?v=lbAM75jt6Sk. Там весь процесс показан на экране, включая интерфейсы App Store Connect, GitHub и Codemagic.
Если у вас остались вопросы по Codemagic, загрузке приложений, App Store Connect или работе с Apple Developer аккаунтами, их всегда лучше разбирать на конкретном кейсе: от структуры проекта и codemagic.yaml до code signing и статусов билда уже после загрузки.
Готовые аккаунты с гарантией 7 дней. 10+ GEO на выбор. Оплата только после проверки.
Заказать в Telegram