Как автоматически архивировать артефакты сборки Xcode Cloud? Руководство 2026

Как автоматически архивировать артефакты сборки Xcode Cloud? Руководство 2026

Автоматически архивируйте нужные артефакты Xcode Cloud сразу после завершения сборки: скачайте их через Xcode, App Store Connect или API, проверьте файлы и сохраните в своём хранилище. Это подходит командам, которым важно восстановить контекст сбоя, подтвердить результаты тестирования или повторно проверить выпуск после того, как материалы перестанут быть доступны в облаке Apple.

Это руководство для разработчиков и CI-инженеров, которым нужны журналы, архивы приложения, символы или результаты тестирования для последующей работы.
Если команде достаточно открыть текущий отчёт сборки и не требуется хранить его после облачного срока доступности, отдельный архив может быть излишним.
Если материалы нужны для расследования, аудита или воспроизводимой проверки — определите состав и место хранения заранее.

Сначала определите, что именно нужно сохранить

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

В документации Apple указано, что информация о сборках Xcode Cloud и связанные артефакты доступны не более тридцати дней. Это срок облачной доступности материалов, а не правило для срока хранения в хранилище команды. Если они понадобятся позднее, их нужно скачать заранее. Apple описывает доступные материалы и способы их сохранения в документации Xcode Cloud.

Материал Для чего он нужен Что зафиксировать рядом
Журнал сборки Найти причину сбоя или понять последовательность действий Идентификатор сборки, рабочий процесс и коммит
Архив приложения или другой бинарный файл Повторно проверить конкретный результат сборки Имя файла, тип артефакта и сведения о сборке
Символы Разобрать отчёт о сбое для соответствующей версии приложения Связь с архивом и версией исходного кода
Результаты тестирования Подтвердить, какие тесты запускались и что они показали Рабочий процесс, коммит и итог тестирования

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

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

Пока автоматизация не готова, скачивайте материалы вручную

Ручной способ подходит для редких сборок, первичной проверки состава артефактов или процесса, в котором специалист должен подтвердить файлы перед сохранением. Откройте отчёт сборки в Xcode либо найдите нужную сборку в App Store Connect. Перейдите к действиям сборки, просмотрите доступные материалы и скачайте только то, что требуется для вашей задачи.

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

Способ получения Подходит для Ограничение, которое нужно учесть
Xcode Просмотра отчёта и ручного сохранения материалов разработчиком Результат зависит от действий человека
App Store Connect Проверки сборки и получения доступных материалов через интерфейс Не создаёт автоматически архив с правилами команды
App Store Connect API Повторяемой выгрузки из автоматизированного процесса Требует настройки авторизации, обработки ответа и проверки файла

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

Затем свяжите сборку с её действиями и артефактами

Для автоматизации сначала нужно найти нужную сборку и определить, какие действия и файлы ей соответствуют. Документация App Store Connect API для рабочих процессов и сборок Xcode Cloud описывает ресурсы, с которыми следует работать. Для списка артефактов конкретного действия предусмотрен запрос получения артефактов действия сборки.

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

Этап автоматизации Действие Результат этапа
Поиск сборки Получить нужную сборку и связать её с рабочим процессом Идентификатор сборки и исходные метаданные
Поиск действия Найти соответствующее действие сборки Список связанных артефактов
Выбор файла Сверить тип и имя с правилами команды Перечень файлов для загрузки
Получение сведений Прочитать атрибуты выбранного артефакта Метаданные и доступные сведения для загрузки
Загрузка Использовать актуальные данные ответа API Локально сохранённый файл для проверки

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

Ссылка на скачивание, полученная через API, действует ограниченное время. Используйте её для немедленной загрузки; не сохраняйте её как постоянную ссылку на архив и не отправляйте в журнал выполнения. Документация Apple по артефактам описывает ресурс и его атрибуты, а не предоставляет бессрочное хранилище файлов.

Настройте авторизацию и скачивание как единый процесс

App Store Connect API требует надлежащей аутентификации. Для доступа создайте API-ключ по инструкции Apple по созданию ключей App Store Connect API и формируйте JWT в соответствии с документацией Apple о токенах запросов. Выдавайте ключу только те права, которые нужны для чтения целевых данных. Не помещайте приватный ключ в репозиторий, обычный файл конфигурации или открытый журнал сборки.

Рабочий процесс должен выполнять несколько действий последовательно:

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

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

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

Проверьте результат и закрепите правила хранения

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

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

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

Чтобы проверять работу процесса после изменений API или правил проекта, прогоните его на настоящей сборке и убедитесь, что сохранённые материалы можно открыть без повторной загрузки из облака. Если в рабочем процессе есть этапы на macOS — например, проверка архива или обработка символов, — отдельно зафиксируйте, какой исполнитель их запускает. Для организации доступа к удалённой среде можно свериться с руководством metalvnc по подключению и помощи, а необходимость отдельного Mac оценивать по конкретным действиям, а не по факту наличия CI.

Контроль перед включением процесса в постоянную работу:

  • [ ] Состав архива соответствует задаче: публикация, диагностика или проверка тестов.
  • [ ] Сборка связана с рабочим процессом, действием и исходным коммитом.
  • [ ] API-ключ и приватный ключ доступны только автоматизации, которой они необходимы.
  • [ ] Скрипт получает актуальные сведения об артефакте перед каждой загрузкой.
  • [ ] Ошибка одного файла не маскируется как успешное сохранение всего набора.
  • [ ] Загруженные материалы открываются и соответствуют ожидаемому типу.
  • [ ] Доступ к архиву ограничен, а журнал не раскрывает JWT и другие секреты.
  • [ ] Назначены ответственный за хранение и владелец правил очистки.

Частые вопросы

Как долго доступны сборки и артефакты Xcode Cloud?
Apple указывает, что сведения о сборке и её артефакты доступны в Xcode Cloud не более тридцати дней. Это срок облачной доступности у Apple, а не готовая политика хранения команды. Если сборка нужна для расследования сбоя, повторной проверки или подтверждения выпуска позднее, загрузите нужные файлы и сохраните их в собственном хранилище до истечения этого срока.

Как скачать артефакты Xcode Cloud через App Store Connect API?
Сначала получите авторизованный доступ к App Store Connect API, затем найдите нужную сборку и действие сборки, запросите список связанных артефактов и сведения о выбранном файле. Из ответа возьмите актуальный адрес загрузки, скачайте файл сразу и сохраните метаданные сборки рядом с ним. Названия полей и доступные ресурсы сверяйте с текущей схемой Apple.

Как сохранить журналы сборки и результаты тестирования Xcode Cloud?
Определите, какие именно материалы нужны для расследования: журнал, результат тестирования, архив приложения или символы. Найдите их в отчёте сборки либо через API, скачайте и проверьте каждый файл. Храните их вместе с идентификатором сборки, ссылкой на коммит и сведениями о рабочем процессе. Доступ к журналам ограничьте, если они могут содержать внутренние данные.

Можно ли постоянно использовать ссылку на скачивание артефакта из API?
Нет. Ссылка из ответа API предназначена для загрузки и действует ограниченное время, поэтому её нельзя считать постоянным местом хранения или записывать как ссылку на архив. Автоматизация должна получить адрес, скачать файл и проверить результат в рамках одного процесса. В архиве сохраняйте сам файл и необходимые метаданные, но не полагайтесь на временный URL.

Если текущий процесс опирается только на облачную доступность Xcode Cloud, у него есть три практических ограничения: ограниченный срок доступа к материалам, временные ссылки загрузки и необходимость самостоятельно связать файлы с коммитом и результатами проверки. Отдельная среда Mac не заменит хранилище и не отменит эту работу, но может пригодиться для постобработки или проверки архива средствами macOS. Когда такой этап нужен временно, аренда Mac у metalvnc может быть удобнее покупки отдельной машины; если же требуется постоянная высокая нагрузка или физические интерфейсы, сначала оцените локальный Mac. Сравнить условия можно на странице тарифов metalvnc.

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

Как долго доступны сборки и артефакты Xcode Cloud?

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

Как скачать артефакты Xcode Cloud через App Store Connect API?

Сначала получите авторизованный доступ к App Store Connect API, затем найдите нужную сборку и действие сборки, запросите список связанных артефактов и сведения о выбранном файле. Из ответа возьмите актуальный адрес загрузки, скачайте файл сразу и сохраните метаданные сборки рядом с ним. Названия полей и доступные ресурсы сверяйте с текущей схемой Apple.

Как сохранить журналы сборки и результаты тестирования Xcode Cloud?

Определите, какие именно материалы нужны для расследования: журнал, результат тестирования, архив приложения или символы. Найдите их в отчёте сборки либо через API, скачайте и проверьте каждый файл. Храните их вместе с идентификатором сборки, ссылкой на коммит и сведениями о рабочем процессе. Доступ к журналам ограничьте, если они могут содержать внутренние данные.

Можно ли постоянно использовать ссылку на скачивание артефакта из API?

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

Организуйте сборку и архивирование на выделенном Mac

Арендуйте в metalvnc выделенный физический Mac M4 для выполнения сборок и собственных сценариев архивирования.

Следующий шаг — настройте среду запуска

Сначала сравните конфигурации, затем выберите способ подключения. Используйте SSH для работы в командной строке и VNC для отладки с графическим интерфейсом.