Два пути выгрузки · матрица доступа · разбор ошибок · приёмка 20 минут
Команды, арендующие Mac на Apple Silicon почасово, обычно попадают в App Store Connect одной из двух дверей: Xcode Organizer после Archive на том же узле или Transporter, когда pipeline уже собрала подписанный .ipa. Дорогая ошибка — считать оба пути «просто загрузкой файла» и думать, что пропускная способность SSH равна готовности к поставке. Выгрузка — точка, где сессии Apple ID, разблокировка связки ключей, выбор команды и долгий HTTPS сталкиваются с таймером аренды. Этот материал описывает два пути, даёт матрицу SSH vs VNC, runbook Organizer и Transporter с сигналами сбоев для тикетов, четыре факта для change control и двадцатиминутный чек-лист VNC под тем же пользователем. Ссылки: чек-лист первого внешнего TestFlight, runbook Plan B Xcode Cloud, матрица Fastlane Match SSH/VNC и чек-лист первых тридцати минут.
Путь A — Organizer: вы архивируете в Xcode на арендованном Mac, открываете Окно → Organizer, затем Validate или Distribute в App Store Connect. Архив, идентичности подписи и клиент выгрузки делят один GUI-стек — удобно отлаживать provisioning на том же хосте.
Путь B — Transporter: вы передаёте подписанный экспорт (часто из CI) и используете Transporter или автоматизацию на тех же API без полного открытия проекта Xcode. Интерфейс меньше, но аутентификация и контекст команды остаются в состоянии пользователя macOS, а не только в IPA.
На почасовом облачном Mac боль — это время на часах, а не загадочные ошибки компилятора:
Getrennte Benutzer: SSH-Jobs laufen als ci, VNC-Debugging als admin — Organizer sieht Zertifikate, die der Terminal-Benutzer nie importiert hat.
Скрытый GUI-долг: выгрузка зависает на «Preparing» или «Uploading 0%», потому что связка ключей или 2FA ждут сессии без рабочего стола.
Сетевые посредники: корпоративные VPN или агрессивные прокси обрывают длинные TLS-выгрузки; симптомы похожи на сбой Apple.
Неверный артефакт: CI отдаёт ad-hoc или development, а Organizer ждёт архив App Store с согласованными версией и номером сборки.
Слишком раннее отключение: локальная полоса 100 %, но App Store Connect ещё обрабатывает — узел уничтожают до фиксации ID сборки.
Если вы уже подписали через Fastlane Match на том же хосте, выгрузка — следующий шлюз. Match версионирует активы; Organizer и Transporter всё равно требуют согласованной сессии Apple ID и верного метода экспорта.
Многие команды без Mac на столе разрабатывают на Windows или Linux и принимают сборку на арендованном узле за рубежом. Вопрос не «какой инструмент быстрее», а какой пользователь macOS держит записи связки ключей, которые Apple проверяет при выгрузке. Фиксируйте имя пользователя, Team ID и UTC в каждом тикете — не только «зелёная сборка в Jenkins».
Разметьте задачи до сессии. Метки ssh-ok, vnc-raz или vnc-obyazatelno, чтобы не сжечь час аренды на слепые headless-повторы.
| Задача | Рекомендуемый доступ | Типичный сигнал сбоя | Частая ошибка |
|---|---|---|---|
| Archive + Organizer Validate | VNC (тот же пользователь, что при Archive) | Красные строки provisioning в Organizer | Винить зеркала CocoaPods |
| Первый вход Apple ID на узле | VNC | Цикл 2FA или «не удаётся проверить учётную запись» | Менять MTU роутера |
| Первое сопряжение Transporter | VNC | Окно входа за SSH-сессией | Перекачать IPA |
| Повторная выгрузка (кэш сессии) | SSH допустим при том же пользователе и логах | Периодические 403 API altool | Считать только сбой Apple |
| Upload via xcrun altool | SSH после разблокировки связки в VNC | «Не удалось выгрузить пакет» без деталей | Случайно обновлять Xcode |
| Метаданные ASC в Safari | VNC | Обработка зависла vs удержание compliance | Повторно выгрузить тот же build |
| Очистка диска перед Archive | SSH | Archive не удался: мало места | Купить больший тариф без удаления DerivedData |
Пометьте «нужен VNC один раз» до релизного окна. Запросы выгрузки дешевле в 10:00, чем в 23:45, когда счётчик аренды громче всего.
Если Xcode Cloud — основной builder, выгрузки часто попадают на арендованный Mac как Plan B — см. runbook очереди и Plan B, когда переходить с логов Cloud на физический узел с Organizer.
Organizer по умолчанию, когда арендованный Mac — источник истины для подписи. Работайте в VNC под пользователем, который будет владеть выгрузками. Проверьте Xcode → Настройки → Учётные записи: верная команда, без жёлтых предупреждений.
Гигиена схемы: Configuration Release, Any iOS Device (ou appareil connecté si entitlements spécifiques), incrémentez CFBundleVersion délibérément — jamais « automatique » sans vérifier ASC.
Archive: Продукт → Archive; дождитесь списка в Organizer. Если Archive серый — исправьте подпись в редакторе проекта в VNC, чтобы пройти диалоги.
Validate: ловит многие отказы ASC заранее (иконки, entitlements, compliance). Сохраните PDF лога в тикет.
Distribute → App Store Connect: choisissez upload, symboles si demandé, questions de conformité d'export — répondez comme le questionnaire confidentialité.
Доказательства: скриншот успеха Organizer, UTC-метка, ASC → TestFlight для подтверждения обработки — не только локальная полоса.
# Тот же пользователь macOS, что на VNC — проверка перед выгрузкой Organizer whoami xcodebuild -version security find-identity -v -p codesigning | head -n 15 /usr/sbin/systemsetup -getusingnetworktime
Заметка: с Match на этом хосте выполните readonly sync перед Archive — подробности в статье матрицы Match.
Transporter уместен, когда сборка в другом месте, но Apple требует Mac-клиент выгрузки с учётной записью продавца. Типично: скачать подписанный IPA на арендованный Mac (rsync по SSH), Transporter в VNC, перетащить пакет, доставить, проверить в ASC.
Проверьте метод экспорта: IPA должен подходить для App Store или TestFlight; enterprise/ad-hoc дают непрозрачные ITMS.
Проверка коллизии версий: сравните CFBundleShortVersionString и CFBundleVersion с последним live build в ASC.
Войдите один раз в VNC: завершите Apple ID и политику паролей; имя поставщика должно совпадать с юрлицом.
Доставить: следите за активностью Transporter; экспортируйте лог доставки по запросу поддержки.
Передача в TestFlight: после обработки следуйте руководству первой выгрузки TestFlight для внешних тестировщиков.
Команды автоматизации оборачивают Transporter в iTMSTransporter ou Fastlane upload_to_app_store. Это возможно по SSH после разблокировки связки в GUI. «Headless в первый день аренды» — зрелость, не норма.
Совет: храните контрольные суммы IPA в манифесте CI. При отказе Transporter видно, изменились ли биты в пути или отказ политический.
Пройдите сетку перед закрытием релизного узла. Joignez des captures au ticket de changement.
| Проверка | Действие | Критерий успеха |
|---|---|---|
| Паритет пользователя | Compte barre de menus = whoami en SSH. | Pas d'envois multi-utilisateurs. |
| Xcode Accounts | Équipe sélectionnée ; pas d'avertissements jaunes. | Team ID attendu visible. |
| Archiv oder IPA | Organizer montre le build du jour ou somme IPA Transporter loguée. | Version/build monotone vs ASC. |
| Validate / essai à sec | Organizer Validate oder Transporter-Verifizierung. | Pas d'erreurs bloquantes dans le log exporté. |
| Envoi terminé | Organizer/Transporter-Erfolgs-UI. | Horodatage UTC enregistré. |
| Traitement ASC | Safari: TestFlight-Build erscheint (kann noch verarbeiten). | Numéro de build = artefact. |
| Marge disque | df -h auf Systemvolume. | ≥15 % libre avant prochain Archive. |
Nouveau chez le fournisseur ? Lancez la checklist première utilisation une fois par image, puis cette grille courte orientée envoi à chaque release.
После обработки — группы тестировщиков и compliance.
Читать →Когда очереди Cloud падают и вы переходите на арендованный Mac.
Читать →Actifs de signature avant d'ouvrir Organizer.
Читать →Organizer, wenn Sie auf dem Knoten archivieren und Validate plus Distribute in einem Fluss wollen. Transporter, wenn CI bereits ein signiertes IPA liefert — mit VNC für die Erstanmeldung.
Иногда после кэша для того же пользователя. Первый Apple ID, связка и сопряжение Transporter требуют VNC — см. раздел 2.
Proxies, dérive d'horloge, session Xcode expirée, mauvaise équipe ou invite GUI derrière SSH. Capturez des preuves réseau avant de renvoyer le même IPA.
Заложите двадцать минут VNC на паритет, завершение выгрузки и видимость в ASC — дольше при export compliance.
Organizer и Transporter не взаимозаменяемы — pipelines différents, mais tous deux exigent une session utilisateur macOS saine sur la machine facturée. SSH seul cache les invites jusqu'à la fin du bail ; posséder un Mac supprime le stress horaire mais ajoute matériel au repos, politiques de veille et place au bureau entre les livraisons.
Считайте VNC инфраструктурой выгрузки : même utilisateur qu'à l'Archive, preuves dans ASC, puis détruisez le nœud.
Brauchen Sie einen dedizierten Apple-Silicon-Host mit vollem Desktop für Organizer oder Transporter, stellt VNCMac Remote-Macs für Поставка iOS bereit — nutzen Sie die Deploy-Karte unten oder die страница покупки et главная, um diese Checkliste beim nächsten Build abzubilden.