Найдите следующий шаг

Сначала проверьте здесь

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

Введите ключевое слово, чтобы увидеть подходящие инструкции. После поиска нажмите Enter, чтобы перейти к первому ответу.

Если проблема связана с уже выданной машиной, дополняйте обращение в той же заявке — так мы сможем последовательно разобраться.

На каком этапе возникла проблема?

Разбирайте четыре типа проблем отдельно. Сначала убедитесь, что машина доступна по сети, затем проверяйте инструменты и подпись — так вы не спутаете сетевую проблему со сбоем сборки.

01 / Доставка

Запуск и доставка

Где проверить статус после оплаты, получить данные для подключения и сверить сведения о заказе.

Проверить доставку
02 / Подключение

Удалённое подключение

Разберите отдельно тайм-аут SSH, отказ открытого ключа и сбой подключения к рабочему столу.

Диагностика подключения
03 / Сборка

Xcode и подпись

От журналов archive до профилей подготовки: сначала определите, на каком этапе произошёл сбой — компиляция, архивирование или экспорт.

Проверить сборку и подпись
04 / Оплата

Оплата и продление

Сверьте цены за день, неделю, месяц и квартал, а также проверьте продление и статус платежа.

Проверить условия оплаты
Сначала завершите передачу машины

Ориентируйтесь на статус заказа

Оплата, обработка заказа и доставка машины — разные этапы. После платежа сначала проверьте заказ: страница оплаты сама по себе не означает, что машина уже готова к подключению.

  1. 01

    Проверьте платёж

    Войдите в консоль и сверьте номер заказа, модель, срок аренды и статус оплаты. Отправленный перевод в блокчейне или платёж картой ещё не означает, что статус заказа уже обновлён.

  2. 02

    Проверьте статус доставки

    Откройте нужный заказ или страницу экземпляра и проверьте текущий этап обработки. Срок доставки и фактическую готовность к работе смотрите по актуальному статусу в консоли.

  3. 03

    Получите данные для подключения

    После доставки откройте страницу экземпляра: там указаны адрес узла, имя пользователя, порт SSH и данные для первого входа. Подключайтесь по параметрам именно этой машины, а не другого заказа.

Я уже заплатил. Почему данных для подключения ещё нет?

Сначала убедитесь, что проверяете заказ, связанный с этим платежом, затем сверьте статус оплаты в консоли. Если платёж подтверждён, но экземпляр всё ещё обрабатывается, укажите в обращении номер заказа, способ оплаты, номер платёжного подтверждения и текущий статус. По этим данным поддержка проверит этап доставки.

При оплате USDT-TRC20 сохраните хеш транзакции, при оплате картой — номер записи о платеже. Не отправляйте полный номер карты, код безопасности или пароль от консоли. Не создавайте повторные заказы для одного платежа.

Что проверять отдельно при тайм-ауте SSH и отказе открытого ключа?

Тайм-аут подключения:Сначала убедитесь, что экземпляр доставлен и доступен для подключения. Затем посимвольно сверьте адрес узла и порт, проверьте локальную сеть, прокси и правила доступа. Тайм-аут происходит до аутентификации; повторная замена открытого ключа обычно не решает проблему с сетевым маршрутом.

Permission denied (publickey):Проверьте, соответствуют ли друг другу имя пользователя, используемый закрытый ключ и открытый ключ, добавленный в консоль. Загрузите содержимое файла открытого ключа; закрытый ключ храните локально и не отправляйте поддержке. Замените HOST, PORT и USER фактическими значениями со страницы экземпляра.

ssh -vv -o IdentitiesOnly=yes \
  -i ~/.ssh/id_ed25519 \
  -p PORT USER@HOST

Перед отправкой результатов диагностики удалите конфиденциальные данные, например адрес узла и локальные пути. Оставьте тип ошибки и этап аутентификации. Если изменился отпечаток хоста, сначала проверьте, переустанавливали ли вы систему; не отключайте проверку отпечатка без проверки.

SSH работает, но к удалённому рабочему столу подключиться не удаётся. Что делать?

Сначала проверьте данные для подключения к рабочему столу на странице экземпляра и убедитесь, что это та же машина. Удалённый рабочий стол и SSH используют разные каналы подключения. Успешное SSH-подключение подтверждает только доступность маршрута SSH.

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

Настройки подключения и порядок переноса описаны в инструкции по SSH и удалённому подключению. Откройте рабочий стол на странице экземпляра после входа в систему.

Сначала найдите первую настоящую ошибку

Сбой archive — не повод сразу всё удалять

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

В каком порядке искать причину ошибки archive?

Запишите текущий коммит, команду сборки и версию Xcode, а также убедитесь, что Scheme существует и предназначена для архивирования. Для задач из командной строки проверьте выбранный каталог инструментов разработчика: версия Xcode, открытая на рабочем столе, может отличаться от версии, используемой CI.

xcode-select -p
xcodebuild -version
xcodebuild -list -workspace App.xcworkspace

Замените App.xcworkspace и App фактическими именами проекта. Для проекта с workspace используйте workspace, а не project. Сборка может завершиться ошибкой ещё до архивирования, если не восстановлены зависимости, не добавлена общая Scheme или целевая версия ОС не соответствует SDK.

set -o pipefail
xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -destination 'generic/platform=iOS' \
  -archivePath "$PWD/output/App.xcarchive" \
  archive 2>&1 | tee archive.log

На этом этапе создаётся .xcarchive, а не IPA для распространения. Если архивирование прошло успешно, но экспорт завершился ошибкой, проверьте подпись и профиль подготовки — не пересобирайте все зависимости.

Когда стоит проверить DerivedData?

Проверьте, не связана ли проблема с кэшем, если после смены набора инструментов возникла несовместимость кэша модулей или рассогласование сгенерированных файлов, либо если один и тот же коммит успешно собирается в чистой среде, но не со старым кэшем. Сначала остановите сборку проекта и сохраните журналы. Не удаляйте весь каталог пользователя.

Надёжнее проверить это, задав для текущей сборки новый каталог, предназначенный только для проекта. Старый каталог сохраните для сравнения. Если ошибка повторится, ищите причину в исходном коде, зависимостях или конфигурации, а не очищайте кэш снова.

xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -derivedDataPath "$PWD/.build/DerivedData-check" \
  -destination 'generic/platform=iOS' \
  build

После успешной сборки отдельно проверьте, какие старые каталоги проекта уже не нужны, и удалите их. Храните исходный код, файлы подписи, архивы и DerivedData раздельно — это снижает риск случайного удаления.

Что делать, если не удаётся найти среду выполнения симулятора или цель тестирования?

Сначала определите, что нужно выполнить: архивирование для устройства или тестирование на симуляторе. Для архива устройства выберите цель iOS-устройства; для тестов на симуляторе нужны поддерживаемая текущей версией Xcode среда выполнения и устройство. Не используйте цель симулятора вместо цели архива для распространения.

xcrun simctl list runtimes
xcrun simctl list devices available
xcodebuild -showdestinations \
  -workspace App.xcworkspace -scheme App

Если среда выполнения отсутствует, установите соответствующие компоненты платформы в настройках Xcode. В поддерживающих эту команду версиях Xcode компоненты платформы iOS можно загрузить и способом ниже. Проверьте свободное место на диске и убедитесь, что в командной строке выбрана нужная версия Xcode.

xcodebuild -downloadPlatform iOS

После установки снова выведите список destinations и укажите в CI фактически доступную цель. Не используйте постоянно идентификатор симулятора с другого компьютера.

Передавайте данные для подписи отдельно

Сертификат, профиль и API Key — для разных задач

.p12 содержит сертификат и закрытый ключ, профиль подготовки задаёт ограничения приложения и его возможностей, а API Key авторизует соответствующие интерфейсы. Они не заменяют друг друга.

Импортировал .p12, но CI всё равно не видит идентификатор подписи. Почему?

Передайте .p12 на машину по защищённому каналу, импортируйте его в связку ключей, используемую для сборки, и убедитесь, что файл содержит соответствующий закрытый ключ. Одного сертификата без закрытого ключа недостаточно для подписи кода. Пароль для импорта задавайте через секретную переменную CI; не записывайте его в репозиторий, скрипт командной строки или обращение в поддержку.

security find-identity -v -p codesigning

Выполните проверку в среде пользователя, от имени которого работает runner. Если сертификат виден пользователю рабочего стола, это не значит, что к нему есть доступ у другой служебной учётной записи. Также проверьте, разблокирована ли связка ключей, добавлена ли она в список поиска этого пользователя и есть ли у процесса подписи необходимые права.

Используйте для сборки отдельную связку ключей и блокируйте её после завершения задачи согласно установленному порядку. Если нужна помощь, отправьте очищенный от конфиденциальных данных результат проверки идентификаторов и текст ошибки. Не отправляйте .p12, закрытый ключ или пароль для импорта.

Архивирование прошло успешно, но при экспорте IPA указано несоответствие профиля подготовки. Что проверить?

Сверьте четыре параметра: Bundle ID, Team ID, назначение экспорта и entitlements. Для приложений с расширениями нужна отдельная конфигурация каждого подписываемого Target. Совпадение настроек основного приложения не гарантирует совпадение настроек расширений.

Также проверьте срок действия профиля, наличие в нём используемого сертификата и соответствие способа подписи параметрам экспорта. Для разработки и тестирования применяются другие настройки, чем для распространения. Не выбирайте профиль только по похожему имени файла.

Сохраните журнал этапа экспорта и очищенную от конфиденциальных данных копию ExportOptions.plist. В обращении укажите, где произошёл сбой: на этапе archive или exportArchive — это поможет сразу сузить круг причин.

Как безопасно хранить API Key App Store Connect?

Храните файл .p8 в каталоге с ограниченным доступом. Передавайте Key ID, Issuer ID и путь к файлу через секретные переменные CI. Используйте только те права, которые нужны для загрузки или автоматизации, и не вставляйте содержимое ключа прямо в lane или репозиторий.

API Key подходит для загрузки и управления в процессах, поддерживающих такой способ аутентификации, но не заменяет закрытый ключ сертификата, необходимый для локальной подписи кода. Если не удаётся загрузить сборку в TestFlight, выясните, связана ли ошибка с локальной подписью артефакта, аутентификацией API, правами приложения или сведениями о версии.

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

Что сначала проверить при настройке Fastlane match на новой машине?

Проверьте права на чтение репозитория с данными для подписи, пароль расшифровки, тип распространения, идентификатор приложения и настройки команды. Для обычной работы CI предпочтительно только считывать уже подготовленные данные для подписи, не создавая и не изменяя сертификаты при каждом запуске.

lane :prepare_signing do
  match(
    type: "appstore",
    readonly: true,
    app_identifier: ENV.fetch("APP_IDENTIFIER"),
    team_id: ENV.fetch("TEAM_ID")
  )
end

Управляйте учётными данными для доступа к репозиторию и паролем расшифровки отдельно. Если не удаётся прочитать данные, проверьте аутентификацию репозитория; если не удаётся расшифровать — пароль; если установка прошла успешно, но подпись не работает, проверьте связку ключей и профиль подготовки. Не сводите три разные проблемы к тому, что «match не работает».

Проверяйте срок аренды и оплату отдельно

Четыре периода аренды по установленным ценам

Для аренды на день, неделю, месяц и квартал действуют отдельные цены — не рассчитывайте стоимость других периодов умножением дневной ставки. Обе модели — выделенные физические машины, не виртуальные. Итоговую сумму смотрите в деталях заказа.

Базовая цена модели, доллары США (USD)
Модель и конфигурацияДеньНеделяМесяцКвартал
OSXBuild Bake M4
M4 / 16GB / 256GB
$20.1$54.2$100.3$272.8
OSXBuild Bake M4 Pro
M4 Pro / 64GB / 2TB
$60.3$162.9$301.6$820.4
Как сравнить четыре периода аренды и рассчитать дополнительные опции?

Выберите период с учётом предполагаемого непрерывного времени использования машины, затем проверьте цену модели и дополнительных опций за тот же период. Точное время начала и окончания аренды указано в заказе. Не считайте, что «месяц» означает только оставшиеся дни календарного месяца.

Дополнительные SSD и Thunderbolt 5 параллельно доступны по отдельным ценам для каждого из четырёх периодов. Сначала выберите нужные опции в конфигураторе, затем проверьте итог в деталях оплаты. Не оценивайте окончательную сумму только по базовой цене машины. Полный каталог и рекомендации по выбору — в разделе Тарифы аренды и дополнительные опции.

Где продлить аренду и что сделать до её окончания?

Войдите в консоль, откройте нужную подписку или заказ и проверьте дату окончания, доступные варианты продления и счёт. После оплаты ещё раз проверьте новую дату окончания. Открытая страница оплаты или отправленный платёж сами по себе не означают, что аренда продлена.

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

По окончании аренды машина переходит в процесс вывода из эксплуатации: диск безопасно стирают, а систему устанавливают заново. Не используйте узел как единственное место хранения резервной копии и не рассчитывайте забрать локальные файлы после окончания аренды.

Какие способы оплаты доступны и что проверить при ошибке?

Принимаются только USDT-TRC20 и карты Visa / Mastercard / Amex через Stripe. Все платежи проводятся в долларах США (USD). Фактически доступный платёжный шлюз определяется ответом серверного интерфейса.

При оплате USDT-TRC20 внимательно сверьте сеть, адрес получателя и сумму на странице оплаты; не используйте платёжные данные старого заказа. При оплате картой выполните проверку по инструкциям платёжного шлюза, затем вернитесь в консоль и проверьте статус.

При сбое оплаты укажите номер заказа, выбранный способ, очищенное от конфиденциальных данных сообщение об ошибке и номер транзакции. Платежи по картам обрабатывает Stripe; для обращения или письма не нужны полный номер карты и код безопасности.

Приложите сведения о проблеме

Перед обращением проверьте четыре пункта

Воспроизводимые шаги полезнее сообщения «сборка сломалась». Если задача ещё выполняется, сначала сохраните её состояние и только затем перезапускайте машину или меняйте конфигурацию.

  • После сохранения данных попробовали перезапустить

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

  • Проверили порт SSH и открытый ключ

    Сверьте адрес узла, имя пользователя, порт и соответствие пары ключей с данными текущего экземпляра. Укажите точный текст ошибки. Не загружайте закрытый ключ и не отправляйте пароль для первого входа.

  • Приложили последние 50 строк журнала

    Приложите последние 50 строк и контекст первой ошибки, имеющей отношение к проблеме. Укажите команду, версию Xcode и идентификатор коммита. Если журнал большой, прикрепите его к обращению через консоль, предварительно удалив токены и секреты подписи.

  • Указали узел и номер заказа

    Укажите номер заказа, узел, время и часовой пояс, ожидаемый и фактический результат. Добавьте сведения о последнем успешном запуске, чтобы поддержке не пришлось повторно запрашивать основные данные.

Извлечение последних строк журнала не меняет артефакты сборки:

tail -n 50 archive.log

Не включайте в материалы для поддержки закрытый ключ сертификата, пароль .p12, файл .p8, токены доступа или пароль от консоли.

Проблема не решена? Передайте нам результаты проверки

Если вопрос связан с заказом или неисправностью машины, войдите в консоль и отправьте обращение. По вопросам до оформления заказа, если не удаётся войти или нужно сообщить дополнительные контактные данные, напишите на адрес support@osxbuild.com.

Поддержка работает с учётом часовых поясов Азиатско-Тихоокеанского региона и западного побережья США. Статус ответа смотрите в обращении или письме. Укажите свой часовой пояс и время, когда вы можете участвовать в диагностике, а новые результаты добавляйте в исходное обращение.

В разделе контактов указано, какие сведения подготовить для разных обращений. Машины работают круглосуточно, 365 дней в году; это не связано с часами ответа на обращения.