Гайды

Как безопасно публиковать iOS-приложения: Codemagic CI/CD и App Store Connect без Xcode

📅 23 сентября 2026 ⏱ 12 мин чтения ✍️ SmartShop 👁 35

Пошаговый практический гайд по настройке CI/CD для iOS-приложения через Codemagic. Разбираем подготовку Xcode-проекта, создание SSH-ключа, настройку codemagic.yaml, выпуск GitHub token и App Store Connect API key, подключение репозитория и Apple Developer аккаунта к Codemagic, а также запуск сборки с автоматической загрузкой билда в App Store Connect.

Как безопасно публиковать iOS-приложения: Codemagic CI/CD и App Store Connect без Xcode

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 должны быть выше, чем у последнего билда, который уже был загружен в аккаунт.

Подготовка Xcode-проекта — шаг 1

После этого нужно подготовить SSH-ключ, который понадобится для дальнейшей конфигурации. Откройте Terminal и сгенерируйте новый RSA-ключ командой:

ssh-keygen -t rsa -b 2048 -m PEM -f ~/Desktop/ios_distribution_private_key -q -N ""
Подготовка Xcode-проекта — шаг 2

После выполнения команды на рабочем столе появится файл ios_distribution_private_key. Именно его содержимое понадобится чуть позже для вставки в конфигурацию Codemagic. Сам файл лучше сразу сохранить и не удалять до окончания настройки.

Подготовка Xcode-проекта — шаг 3

Возвращаемся к проекту. В корне проекта создайте файл codemagic.yaml. Это основной конфигурационный файл, по которому Codemagic будет понимать, как именно собирать приложение, как настраивать code signing и куда отправлять готовый билд.

Подготовка Xcode-проекта — шаг 4

Дальше вставьте в codemagic.yaml заранее подготовленную конфигурацию. Внутри неё отдельно обратите внимание на блок CERTIFICATE_PRIVATE_KEY. Именно сюда нужно вставить содержимое созданного RSA-ключа.

Подготовка Xcode-проекта — шаг 5

Откройте файл ios_distribution_private_key, полностью скопируйте его содержимое — от BEGIN RSA PRIVATE KEY до END RSA PRIVATE KEY — и вставьте его в блок CERTIFICATE_PRIVATE_KEY внутри codemagic.yaml. После этого сохраните файл.

Подготовка Xcode-проекта — шаг 6

Когда конфигурация готова, запушьте весь проект вместе с codemagic.yaml в GitHub. После этого можно переходить к созданию токена доступа для репозитория.

Создание GitHub Personal Access Token

Чтобы Codemagic получил доступ к приватному GitHub-репозиторию, понадобится Personal Access Token. Создавать его лучше заранее, до регистрации и подключения репозитория в Codemagic.

Для начала откройте GitHub, нажмите на иконку профиля и перейдите в Settings.

Создание GitHub Personal Access Token — шаг 1

Дальше откройте раздел Credentials, а затем перейдите в Personal access tokens (classic).

Создание GitHub Personal Access Token — шаг 2

Либо, если вы уже находитесь внутри раздела токенов, нажмите Generate new token и выберите вариант Generate new token (classic).

Создание GitHub Personal Access Token — шаг 3

В настройках нового токена в поле Note можно указать, например, codemagic. В качестве срока действия в нашем примере используется вариант без ограничения по времени. По правам обязательно включите repo, а также дополнительно активируйте workflow.

Создание GitHub Personal Access Token — шаг 4

После создания GitHub покажет токен только один раз. Поэтому обязательно сразу сохраните его в безопасное место. Этот токен понадобится уже на следующем этапе, когда мы будем подключать репозиторий к Codemagic.

Создание GitHub Personal Access Token — шаг 5

Удаление User Data Xcode перед публикацией

Мы уже упоминали, что в рабочий Xcode не стоит авторизовывать Apple Developer аккаунт, а во время разработки не нужно выбирать Team для приложения. Но перед тем как переходить к сборке и публикации, стоит сделать ещё один шаг: убрать локальные пользовательские данные Xcode из Git и добавить их в исключения.

Даже если Apple Developer аккаунт никогда не использовался внутри Xcode, в проекте могут оставаться каталоги xcuserdata с локальными данными пользователя. Чтобы они не попадали в GitHub, их нужно убрать из отслеживаемых файлов и сразу добавить соответствующие пути в .gitignore. Тогда повторять эту операцию перед каждой следующей сборкой не придётся.

Для начала откройте корень проекта через Finder. Нажмите правой кнопкой на файл проекта с расширением .xcodeproj и выберите New Terminal at Folder.

Удаление User Data Xcode перед публикацией — шаг 1

В открывшемся Terminal уберите пользовательские каталоги Xcode из Git-индекса:

git rm -r --cached xcuserdata
git rm -r --cached project.xcworkspace/xcuserdata
Удаление User Data Xcode перед публикацией — шаг 2

После этого вернитесь на уровень корня проекта. Если файла .gitignore ещё нет, создайте его через Terminal:

cd ..
nano .gitignore
Удаление User Data Xcode перед публикацией — шаг 3

В .gitignore добавьте следующие строки:

*.xcodeproj/xcuserdata/
*.xcodeproj/project.xcworkspace/xcuserdata/

Если .gitignore уже существует, создавать новый файл не нужно - просто добавьте в него эти исключения. При работе через nano сохраните изменения сочетанием Control + X, затем нажмите Y и Enter.

Удаление User Data Xcode перед публикацией — шаг 4

Теперь зафиксируйте изменения в Git и отправьте их в репозиторий:

git add .
git commit -m "remove user data"
git push
Удаление User Data Xcode перед публикацией — шаг 5

После этого 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.

Создание App Store Connect API key — шаг 1

Если активного ключа для этой задачи ещё нет, нажмите на кнопку с плюсом и создайте новый API key.

Создание App Store Connect API key — шаг 2

Если это первый API key в аккаунте, Apple может дополнительно запросить подтверждение доступа к API. Это нормальное поведение. В окне создания ключа укажите название — например, codemagic — и выберите подходящий уровень доступа. Для типового сценария загрузки билда обычно используется доступ, достаточный для работы с приложением и сборкой.

Создание App Store Connect API key — шаг 3

После создания ключа сохраните три вещи:

  • Issuer ID;
  • Key ID;
  • скачанный .p8 файл.
Создание App Store Connect API key — шаг 4

Здесь есть важный момент: .p8 файл можно скачать только один раз. Если вы его не сохраните, потом придётся выпускать новый ключ. Поэтому лучше сразу положить его в отдельную защищённую папку.

Регистрация в Codemagic и подключение GitHub-репозитория

Когда GitHub token и App Store Connect API key готовы, можно переходить к Codemagic.

Откройте сайт Codemagic и начните регистрацию, нажав Sign up.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 1

Введите email, подтвердите регистрацию и введите код, который придёт на почту.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 2

После подтверждения Codemagic предложит выбрать формат использования сервиса. Для нашего примера подойдёт Individual.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 3

Дальше запускается первоначальная настройка. На этапе Connect your code выберите вариант ручного подключения репозитория через Add URL manually.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 4

После этого укажите URL GitHub-репозитория, ниже впишите username GitHub-аккаунта и вставьте сохранённый Personal Access Token. Если репозиторий приватный, чекбокс Public repository отмечать не нужно. Затем подтвердите выбор репозитория.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 5

Иногда Codemagic не определяет тип проекта автоматически. В таком случае нажмите Set type manually.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 6

Дальше вручную выберите тип проекта iOS и завершите создание приложения.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 7

После завершения первоначального онбординга приложение появится в списке приложений Codemagic. При необходимости откройте его через Applications и завершите оставшиеся шаги настройки.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 8

Когда всё сделано правильно, Codemagic подтянет репозиторий и увидит файл codemagic.yaml. Обычно после этого внутри проекта уже будет отображаться сама конфигурация, а подключение репозитория завершится без ошибок.

Регистрация в Codemagic и подключение GitHub-репозитория — шаг 9

Подключение Apple Developer аккаунта к Codemagic

Следующий этап — дать Codemagic доступ к Apple Developer аккаунту через App Store Connect API key.

В Codemagic откройте Settings, раскройте блок Integrations, найдите строку Developer Portal и нажмите Connect.

Подключение Apple Developer аккаунта к Codemagic — шаг 1

В форме подключения укажите название ключа — например, codemagic. Затем вставьте сохранённый Issuer ID, ниже добавьте Key ID, а в поле API key загрузите скачанный .p8 файл.

Подключение Apple Developer аккаунта к Codemagic — шаг 2

После сохранения проверьте, что ключ появился в списке подключённых и определяется как активный. Это значит, что интеграция с Apple Developer Portal подключена корректно.

Подключение Apple Developer аккаунта к Codemagic — шаг 3

На этом этапе у Codemagic уже есть и доступ к GitHub-репозиторию, и подключение к Apple Developer аккаунту. Теперь можно переходить к самой сборке.

Запуск сборки через Codemagic

Откройте нужное приложение в Codemagic. Если репозиторий и конфигурация уже успешно подтянулись, внутри проекта будет доступна кнопка Start your first build или Start new build.

Запуск сборки через Codemagic — шаг 1

Нажмите на кнопку запуска и проверьте параметры. Обычно здесь нужно выбрать нужную ветку — например, main — и workflow из файла codemagic.yaml. В нашем случае workflow называется Build.

Запуск сборки через Codemagic — шаг 2

После подтверждения сборка начнётся автоматически. Сначала Codemagic подготовит build machine, затем скачает исходники из GitHub, настроит окружение, получит signing files, применит code signing и соберёт готовый IPA-файл.

Запуск сборки через Codemagic — шаг 3

Когда workflow завершится без ошибок, рядом с приложением появится зелёный индикатор успешной сборки, а в логе будет видно, что все этапы отработали корректно.

Запуск сборки через Codemagic — шаг 4

Именно на этом этапе Codemagic автоматически выполняет всю тяжёлую часть процесса: клонирует проект, использует подключённый Apple Developer аккаунт, получает необходимые signing files, собирает IPA и отправляет билд в App Store Connect.

Проверка билда в App Store Connect

После успешной сборки откройте App Store Connect и проверьте нужное приложение. Через некоторое время новый билд появится в списке сборок и станет доступен для дальнейших действий — например, для TestFlight или следующего релиза в App Store.

Проверка билда в App Store Connect — шаг 1

Если рядом с новым билдом вы видите статус вроде 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 и статусов билда уже после загрузки.

Нужен чистый Apple Developer аккаунт?

Готовые аккаунты с гарантией 7 дней. 10+ GEO на выбор. Оплата только после проверки.

Заказать в Telegram

Комментарии

Комментариев пока нет. Будьте первым!

Часто задаваемые вопросы

Нужно ли платить за использование Codemagic для сборки iOS-приложений через Personal-аккаунт?

Для сценария с Personal-аккаунтом Codemagic бесплатного тарифа обычно достаточно.

Какие три параметра Xcode-проекта нужно проверить перед запуском сборки в Codemagic?

Необходимо проверить Bundle Identifier, Version и Build. Bundle Identifier должен совпадать с Bundle ID приложения в App Store Connect, а Version и Build должны быть выше, чем у последнего загруженного билда.

Почему нельзя скачать файл .p8 повторно после создания App Store Connect API key?

Apple позволяет скачать .p8 файл только один раз. Если не сохранить его сразу, придётся выпускать новый ключ.

Что означает статус Missing Compliance у нового билда в App Store Connect?

Этот статус означает, что Apple запрашивает дополнительную информацию по export compliance. Нужно нажать Manage и заполнить стандартную форму, после чего билд станет доступен для дальнейших действий.

Какую команду нужно выполнить в Terminal, чтобы сгенерировать RSA-ключ для Codemagic?

Нужно выполнить команду: ssh-keygen -t rsa -b 2048 -m PEM -f ~/Desktop/ios_distribution_private_key -q -N "". После этого на рабочем столе появится файл ios_distribution_private_key.

Скидка $50 на первый заказ

Для применения используйте промокод

SMRT50
Купить

Распространяется только на новых клиентов при покупке аккаунта