Запуск и доставка
Где проверить статус после оплаты, получить данные для подключения и сверить сведения о заказе.
Проверить доставкуПроверьте статус заказа, порт подключения и журналы сборки. Введите ключевое слово, чтобы найти конкретные шаги диагностики.
Введите ключевое слово, чтобы увидеть подходящие инструкции. После поиска нажмите Enter, чтобы перейти к первому ответу.
Если проблема связана с уже выданной машиной, дополняйте обращение в той же заявке — так мы сможем последовательно разобраться.
Разбирайте четыре типа проблем отдельно. Сначала убедитесь, что машина доступна по сети, затем проверяйте инструменты и подпись — так вы не спутаете сетевую проблему со сбоем сборки.
Где проверить статус после оплаты, получить данные для подключения и сверить сведения о заказе.
Проверить доставкуРазберите отдельно тайм-аут SSH, отказ открытого ключа и сбой подключения к рабочему столу.
Диагностика подключенияОт журналов archive до профилей подготовки: сначала определите, на каком этапе произошёл сбой — компиляция, архивирование или экспорт.
Проверить сборку и подписьСверьте цены за день, неделю, месяц и квартал, а также проверьте продление и статус платежа.
Проверить условия оплатыОплата, обработка заказа и доставка машины — разные этапы. После платежа сначала проверьте заказ: страница оплаты сама по себе не означает, что машина уже готова к подключению.
Войдите в консоль и сверьте номер заказа, модель, срок аренды и статус оплаты. Отправленный перевод в блокчейне или платёж картой ещё не означает, что статус заказа уже обновлён.
Откройте нужный заказ или страницу экземпляра и проверьте текущий этап обработки. Срок доставки и фактическую готовность к работе смотрите по актуальному статусу в консоли.
После доставки откройте страницу экземпляра: там указаны адрес узла, имя пользователя, порт SSH и данные для первого входа. Подключайтесь по параметрам именно этой машины, а не другого заказа.
Сначала убедитесь, что проверяете заказ, связанный с этим платежом, затем сверьте статус оплаты в консоли. Если платёж подтверждён, но экземпляр всё ещё обрабатывается, укажите в обращении номер заказа, способ оплаты, номер платёжного подтверждения и текущий статус. По этим данным поддержка проверит этап доставки.
При оплате USDT-TRC20 сохраните хеш транзакции, при оплате картой — номер записи о платеже. Не отправляйте полный номер карты, код безопасности или пароль от консоли. Не создавайте повторные заказы для одного платежа.
Тайм-аут подключения:Сначала убедитесь, что экземпляр доставлен и доступен для подключения. Затем посимвольно сверьте адрес узла и порт, проверьте локальную сеть, прокси и правила доступа. Тайм-аут происходит до аутентификации; повторная замена открытого ключа обычно не решает проблему с сетевым маршрутом.
Permission denied (publickey):Проверьте, соответствуют ли друг другу имя пользователя, используемый закрытый ключ и открытый ключ, добавленный в консоль. Загрузите содержимое файла открытого ключа; закрытый ключ храните локально и не отправляйте поддержке. Замените HOST, PORT и USER фактическими значениями со страницы экземпляра.
ssh -vv -o IdentitiesOnly=yes \
-i ~/.ssh/id_ed25519 \
-p PORT USER@HOST
Перед отправкой результатов диагностики удалите конфиденциальные данные, например адрес узла и локальные пути. Оставьте тип ошибки и этап аутентификации. Если изменился отпечаток хоста, сначала проверьте, переустанавливали ли вы систему; не отключайте проверку отпечатка без проверки.
Сначала проверьте данные для подключения к рабочему столу на странице экземпляра и убедитесь, что это та же машина. Удалённый рабочий стол и SSH используют разные каналы подключения. Успешное SSH-подключение подтверждает только доступность маршрута SSH.
Сверьтесь с инструкцией по подключению: проверьте службу удалённого рабочего стола, порт доступа и адрес назначения туннеля. При чёрном экране запишите сообщение клиента и этап сбоя, затем попробуйте снизить разрешение или качество изображения, чтобы отличить проблему отображения от ошибки аутентификации. Перед перезапуском остановите выполняющиеся задачи архивирования или тестирования.
Настройки подключения и порядок переноса описаны в инструкции по SSH и удалённому подключению. Откройте рабочий стол на странице экземпляра после входа в систему.
Сначала сохраните данные о сбое, затем проверьте Xcode, Scheme, зависимости и целевую платформу. Итоговая ошибка в конце журнала — лишь результат; начинать нужно с первой ошибки компиляции или подписи.
Запишите текущий коммит, команду сборки и версию 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 для распространения. Если архивирование прошло успешно, но экспорт завершился ошибкой, проверьте подпись и профиль подготовки — не пересобирайте все зависимости.
Проверьте, не связана ли проблема с кэшем, если после смены набора инструментов возникла несовместимость кэша модулей или рассогласование сгенерированных файлов, либо если один и тот же коммит успешно собирается в чистой среде, но не со старым кэшем. Сначала остановите сборку проекта и сохраните журналы. Не удаляйте весь каталог пользователя.
Надёжнее проверить это, задав для текущей сборки новый каталог, предназначенный только для проекта. Старый каталог сохраните для сравнения. Если ошибка повторится, ищите причину в исходном коде, зависимостях или конфигурации, а не очищайте кэш снова.
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 фактически доступную цель. Не используйте постоянно идентификатор симулятора с другого компьютера.
.p12 содержит сертификат и закрытый ключ, профиль подготовки задаёт ограничения приложения и его возможностей, а API Key авторизует соответствующие интерфейсы. Они не заменяют друг друга.
Передайте .p12 на машину по защищённому каналу, импортируйте его в связку ключей, используемую для сборки, и убедитесь, что файл содержит соответствующий закрытый ключ. Одного сертификата без закрытого ключа недостаточно для подписи кода. Пароль для импорта задавайте через секретную переменную CI; не записывайте его в репозиторий, скрипт командной строки или обращение в поддержку.
security find-identity -v -p codesigning
Выполните проверку в среде пользователя, от имени которого работает runner. Если сертификат виден пользователю рабочего стола, это не значит, что к нему есть доступ у другой служебной учётной записи. Также проверьте, разблокирована ли связка ключей, добавлена ли она в список поиска этого пользователя и есть ли у процесса подписи необходимые права.
Используйте для сборки отдельную связку ключей и блокируйте её после завершения задачи согласно установленному порядку. Если нужна помощь, отправьте очищенный от конфиденциальных данных результат проверки идентификаторов и текст ошибки. Не отправляйте .p12, закрытый ключ или пароль для импорта.
Сверьте четыре параметра: Bundle ID, Team ID, назначение экспорта и entitlements. Для приложений с расширениями нужна отдельная конфигурация каждого подписываемого Target. Совпадение настроек основного приложения не гарантирует совпадение настроек расширений.
Также проверьте срок действия профиля, наличие в нём используемого сертификата и соответствие способа подписи параметрам экспорта. Для разработки и тестирования применяются другие настройки, чем для распространения. Не выбирайте профиль только по похожему имени файла.
Сохраните журнал этапа экспорта и очищенную от конфиденциальных данных копию ExportOptions.plist. В обращении укажите, где произошёл сбой: на этапе archive или exportArchive — это поможет сразу сузить круг причин.
Храните файл .p8 в каталоге с ограниченным доступом. Передавайте Key ID, Issuer ID и путь к файлу через секретные переменные CI. Используйте только те права, которые нужны для загрузки или автоматизации, и не вставляйте содержимое ключа прямо в lane или репозиторий.
API Key подходит для загрузки и управления в процессах, поддерживающих такой способ аутентификации, но не заменяет закрытый ключ сертификата, необходимый для локальной подписи кода. Если не удаётся загрузить сборку в TestFlight, выясните, связана ли ошибка с локальной подписью артефакта, аутентификацией API, правами приложения или сведениями о версии.
После смены ключа обновите конфигурацию runner и удалите старые ссылки на ключ. Если нужна помощь, укажите код ошибки без конфиденциальных данных и этап выполнения, но не отправляйте файл .p8.
Проверьте права на чтение репозитория с данными для подписи, пароль расшифровки, тип распространения, идентификатор приложения и настройки команды. Для обычной работы CI предпочтительно только считывать уже подготовленные данные для подписи, не создавая и не изменяя сертификаты при каждом запуске.
lane :prepare_signing do
match(
type: "appstore",
readonly: true,
app_identifier: ENV.fetch("APP_IDENTIFIER"),
team_id: ENV.fetch("TEAM_ID")
)
end
Управляйте учётными данными для доступа к репозиторию и паролем расшифровки отдельно. Если не удаётся прочитать данные, проверьте аутентификацию репозитория; если не удаётся расшифровать — пароль; если установка прошла успешно, но подпись не работает, проверьте связку ключей и профиль подготовки. Не сводите три разные проблемы к тому, что «match не работает».
Для аренды на день, неделю, месяц и квартал действуют отдельные цены — не рассчитывайте стоимость других периодов умножением дневной ставки. Обе модели — выделенные физические машины, не виртуальные. Итоговую сумму смотрите в деталях заказа.
| Модель и конфигурация | День | Неделя | Месяц | Квартал |
|---|---|---|---|---|
| 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; для обращения или письма не нужны полный номер карты и код безопасности.
Воспроизводимые шаги полезнее сообщения «сборка сломалась». Если задача ещё выполняется, сначала сохраните её состояние и только затем перезапускайте машину или меняйте конфигурацию.
Сначала остановите сборку и тесты, сохраните журналы и несохранённые файлы, затем перезапустите машину. Зафиксируйте, что изменилось после перезапуска. Если текущую задачу нельзя прерывать, укажите в обращении, что машина ещё не перезапущена, и почему.
Сверьте адрес узла, имя пользователя, порт и соответствие пары ключей с данными текущего экземпляра. Укажите точный текст ошибки. Не загружайте закрытый ключ и не отправляйте пароль для первого входа.
Приложите последние 50 строк и контекст первой ошибки, имеющей отношение к проблеме. Укажите команду, версию Xcode и идентификатор коммита. Если журнал большой, прикрепите его к обращению через консоль, предварительно удалив токены и секреты подписи.
Укажите номер заказа, узел, время и часовой пояс, ожидаемый и фактический результат. Добавьте сведения о последнем успешном запуске, чтобы поддержке не пришлось повторно запрашивать основные данные.
Извлечение последних строк журнала не меняет артефакты сборки:
tail -n 50 archive.log
Не включайте в материалы для поддержки закрытый ключ сертификата, пароль .p12, файл .p8, токены доступа или пароль от консоли.
Если вопрос связан с заказом или неисправностью машины, войдите в консоль и отправьте обращение. По вопросам до оформления заказа, если не удаётся войти или нужно сообщить дополнительные контактные данные, напишите на адрес support@osxbuild.com.
Поддержка работает с учётом часовых поясов Азиатско-Тихоокеанского региона и западного побережья США. Статус ответа смотрите в обращении или письме. Укажите свой часовой пояс и время, когда вы можете участвовать в диагностике, а новые результаты добавляйте в исходное обращение.
В разделе контактов указано, какие сведения подготовить для разных обращений. Машины работают круглосуточно, 365 дней в году; это не связано с часами ответа на обращения.