Как долго хранить артефакты сборки Xcode Cloud? Руководство по архивированию 2026
📋 Содержание
Сборка завершилась, а нужный Archive или журнал уже нельзя скачать из записи Xcode Cloud.
Быстрое решение: не считайте Xcode Cloud постоянным архивом — выберите нужные материалы, скачайте их в доступное окно, свяжите с номером сборки и исходным коммитом, затем проверьте восстановление.
Это руководство для независимых разработчиков, которым нужны Archive, символы отладки или журналы релизной сборки.
Оно также подойдёт тем, кто возвращается к результатам тестирования, и небольшим командам, которым нужно передать историю выпусков коллегам.
Артефакты сборки Xcode Cloud: доступность и собственный архив
Запись о сборке в Xcode Cloud и ваша архивная копия — разные вещи. Apple указывает, что материалы сборки доступны в течение ограниченного срока, максимальная продолжительность которого составляет 30 дней; для выпусков Apple рекомендует архивировать необходимые результаты. Не откладывайте сохранение релизных материалов до момента, когда они понадобятся для расследования: проверьте актуальное правило в документации Apple о настройке рабочего процесса Xcode Cloud.
При планировании учитывайте, что «сборка видна в интерфейсе» не означает «все связанные файлы сохранены у команды». Запись может помочь установить, какой запуск вы ищете, но для внешнего архива нужно отдельно получить нужные файлы, сохранить контекст и убедиться, что содержимое читается.
Сначала определите, для чего вам может понадобиться материал. Для расследования аварий важны Archive и соответствующие символы отладки. Для повторного анализа теста — пакет результатов и выбранные вложения. Для выяснения причины сбоя — журнал сборки и сведения о запуске. Нет необходимости бессрочно сохранять всё, что производит каждый запуск.
| Сценарий | Что оставить | Как найти и проверить |
|---|---|---|
| Диагностика выпущенной версии | Archive, подходящие символы отладки, журнал при необходимости | Сопоставить приложение, версию, сборку и коммит; открыть Archive и проверить наличие символов |
| Повторный разбор теста | Пакет результатов тестирования, нужные снимки экрана, журнал | Связать материалы с рабочим процессом и запуском; открыть пакет и вложения |
| Передача релиза другому разработчику | Выбранные материалы выпуска и запись происхождения | Проверить, что коллега может найти сборку, прочитать файлы и понять, чего не хватает |
| Повседневное расследование | Только файлы, относящиеся к конкретной проблеме | Сохранить журнал или результат, если по ним можно воспроизвести или объяснить сбой |
Эта матрица помогает принимать решение до загрузки. Если вы не можете назвать возможную задачу восстановления для файла, не включайте его автоматически в постоянный архив. Если задача понятна, сохраните сам материал и достаточно сведений, чтобы позже установить его происхождение.
Выпущенная версия: Archive и символы отладки
Для опубликованной версии начните с точной идентификации сборки: найдите приложение и рабочий процесс, зафиксируйте версию, идентификатор запуска и связанный коммит. Затем решите, нужен ли вам сохранённый Archive, символы отладки, журнал или их сочетание. Это не взаимозаменяемые файлы.
Archive относится к собранному продукту и может быть нужен для проверки или дальнейших действий с выпуском. Символы отладки помогают сопоставить машинные адреса с понятными именами функций и строками кода. Правила создания материалов для диагностики Apple описывает в руководстве по включению информации для отладки в сборку. Сохранение Archive без нужных символов может оставить вас с файлом, который есть, но не решает задачу разбора аварийного завершения.
Действуйте по сценарию, а не по принципу «скачать всё»:
- Для разбора аварий после выпуска сохраните Archive и те символы отладки, которые соответствуют этой сборке.
- Если расследуете ошибку компиляции или этапа экспорта, сохраните журнал соответствующего запуска.
- Если нужно передать релиз другому участнику команды, добавьте сведения о версии, сборке и коммите.
- Если проекту не требуется восстановление экспорта, не объявляйте Archive обязательным для каждого тестового запуска — зафиксируйте это как правило команды.
Журнал объясняет ход сборки, но не заменяет Archive. Символы не позволяют заново собрать приложение, если исходники и настройки недоступны. Сборка, в свою очередь, не всегда сохраняет удобную для анализа историю ошибок. Сформулируйте цель архивации явно: повторить экспорт, разобрать сбой, подтвердить тест или передать выпуск.
Тестирование: результаты и снимки экрана
Когда нужно вернуться к результату автоматизированного тестирования, сохраните не просто файл с нейтральным именем вроде «результаты». Запишите, какой рабочий процесс его создал, к какой сборке он относится и какой коммит проверялся. Без этих связей даже открывающийся пакет может быть бесполезен: вы увидите результат, но не сможете надёжно определить, для какой версии он получен.
Выбирайте вложения по их диагностической ценности. Снимок экрана полезен, если он показывает конкретное визуальное отклонение или состояние приложения. Журнал нужен, если он позволяет понять последовательность выполнения или причину отказа. Если тестовый пакет содержит данные, которые не нужны для будущего разбора, включите его в архив только при наличии обоснованного сценария.
Apple описывает пакет результатов в материалах о передаче отзывов по работе Xcode Cloud. Перед сохранением проверьте, что выбранный результат действительно связан с нужной сборкой; после скачивания откройте пакет и ключевые вложения. Сам факт успешной загрузки ещё не доказывает, что сохранены все материалы, которые потребуются при разборе.
Адрес загрузки — не архивная копия. Сохраните скачанный файл и метаданные происхождения; временный адрес используйте только для получения материала.
Для внутреннего правила хранения разделите материалы по назначению. Релизная диагностика может требовать Archive и символов; повторный разбор теста — пакет результата и выбранные вложения; повседневный поиск причин сбоя — относящийся к проблеме журнал. Не задавайте единый безусловный срок хранения всем файлам, пока команда не решила, какие задачи должна уметь восстановить.
Загрузка через App Store Connect API: запись и файл
App Store Connect API подходит, если команде нужно включить получение материалов в собственный процесс. Здесь важно не смешивать поиск сборки и скачивание её файла: сначала установите, какой запуск нужен, затем найдите его артефакты, получите сведения о выбранном объекте и выполните загрузку. В описании API для рабочих процессов и сборок Xcode Cloud и ресурса запусков сборок изложена связь между рабочими процессами и запусками.
Для выбранного объекта запросите информацию об артефакте. Документация ресурса артефактов описывает чтение данных о материалах; атрибуты артефакта следует сверять по текущей схеме API. Для отдельного объекта используйте официальный метод получения одного артефакта. Перед автоматизацией проверьте в документации, какие поля и типы доступны именно для вашего запроса.
В практической реализации разделите ответственность на отдельные действия:
- Найдите нужный запуск по приложению и рабочему процессу, а затем проверьте его сведения и связь с коммитом.
- Получите перечень относящихся к запуску материалов и выберите только те типы, которые предусмотрены правилами архивации команды.
- Запросите сведения о нужном артефакте и получите адрес загрузки в соответствии с текущим описанием API.
- Скачайте файл сразу: адрес может быть временным, поэтому сохранять его вместо самого файла нельзя.
- Проверьте завершение загрузки и читаемость файла; при сбое повторно получите актуальные сведения и адрес, а не полагайтесь на старую ссылку.
- Запишите состояние операции: найден ли объект, завершена ли загрузка, прошла ли проверка и где расположена архивная копия.
Для запросов понадобится подходящий способ авторизации. Условия создания и использования токенов сверяйте с официальной документацией Apple по токенам API. Храните секреты отдельно от общедоступного кода и ограничивайте доступ согласно внутренним правилам команды. Не записывайте чувствительные значения в обычные журналы автоматизации.
Если API не находит ожидаемый файл, сначала проверьте, что вы выбрали правильный запуск и артефакт, а затем повторите получение сведений по актуальному идентификатору. Сбои загрузки обрабатывайте отдельно от ошибок авторизации и ошибок поиска. Такая разбивка позволяет понять, на каком этапе потерялась связь, и не помечать неполную операцию как успешно архивированную.
Достаточный объём: релиз, тест или повседневный сбой
Архивировать каждый результат без отбора кажется надёжным, но не всегда помогает восстановлению. Файлы занимают место и со временем теряют смысл, если рядом нет данных о сборке и цели хранения. Политика команды должна определять не абстрактное требование «хранить всё», а конкретные материалы для каждого сценария.
Для релизной диагностики оставляйте материалы, без которых нельзя сопоставить выпуск с диагностическими данными. Для повторного анализа тестирования приоритетны результат и нужные вложения. Для обычного расследования достаточно сохранить артефакты, которые объясняют конкретную проблему, если их можно связать с запуском. Оцените внутренние ограничения хранения по собственным файлам и правилам проекта — не выводите общую норму размера или стоимости без данных о вашем процессе.
Перед внедрением политики пройдите эту проверку:
- [ ] Для каждого сохраняемого типа файлов указана задача: диагностика выпуска, воспроизведение теста или разбор сбоя.
- [ ] Для каждого файла можно установить приложение, рабочий процесс, сборку и исходный коммит.
- [ ] Archive отделён от символов отладки, журналов и пакетов результатов тестирования.
- [ ] В автоматизации учитывается, что адрес загрузки нужно использовать для получения файла, а не хранить вместо него.
- [ ] Загрузки с ошибками можно отличить от успешных, а повторный запрос не скрывает первопричину.
- [ ] Другой участник команды может найти архив и понять, какие материалы в него включены.
- [ ] Проверено открытие ключевого файла; отсутствующие элементы отмечены вместе с ответственным за устранение пробела.
Если хотя бы один релизный файл нельзя связать с запуском или коммитом, не закрывайте задачу архивации. Сначала восстановите контекст из записи сборки и метаданных проекта, затем повторно проверьте сохранённую копию. Именно эта связь превращает набор файлов в пригодный для работы архив.
Частые вопросы о хранении и восстановлении
Может ли запись о сборке заменить отдельный архив?
Нет. Запись помогает найти и идентифицировать запуск, но доступ к материалам ограничен сроком, описанным Apple. Для долговременного хранения скачайте сами файлы, добавьте контекст происхождения и проверьте их открытие. Если позже вам понадобится только объяснить, какой коммит породил выпуск, сохранённой записи может быть достаточно; для восстановления материалов — нет.
Нужно ли хранить Archive для каждой сборки?
Нет универсального требования сохранять каждый Archive бессрочно. Решение зависит от того, понадобится ли повторный экспорт, проверка релизного продукта или сопоставление с диагностикой. Опишите правила для релизных и тестовых сборок отдельно, а затем проверьте на реальном случае, что выбранного набора достаточно для восстановления нужного действия.
Что делать, если скачивание по API не завершается?
Определите этап сбоя: поиск запуска, получение артефакта, авторизация или загрузка по выданному адресу. Если адрес мог устареть, запросите актуальные сведения об объекте и получите новый адрес согласно документации. После повторной попытки сохраните результат проверки; не отмечайте операцию завершённой только потому, что API вернул сведения об артефакте.
Какие данные нужны коллеге для поиска архива?
Дайте ему сведения, связывающие материал с приложением, рабочим процессом, запуском, версией и коммитом. Добавьте понятное описание типов файлов и места хранения по правилам команды. Затем попросите коллегу найти и открыть ключевой файл самостоятельно. Если это невозможно без автора процесса, архив пока не готов к передаче.
Проверка восстановления на Mac
Mac может быть частью процесса получения и проверки материалов, но наличие удалённого Mac само по себе не создаёт архив и не гарантирует передачу файлов. Сначала определите, где команда хранит копии и кто имеет право их читать; затем настройте скачивание, привязку к метаданным и проверку по собственным правилам. Сравнить отдельную физическую среду и виртуализацию macOS можно в руководстве по различиям между bare metal и виртуализацией macOS.
Для приёмки используйте последовательность, которую сможет повторить другой участник: найдите исторический запуск, скачайте выбранный материал, сопоставьте его с коммитом, откройте файл и зафиксируйте результат. Если проверяете Archive, подтвердите, что он открывается и соответствует нужному выпуску. Если проверяете результаты тестирования, откройте пакет и проверьте необходимые вложения. Отдельно запишите недостающие файлы и назначьте ответственного; не объявляйте восстановление успешным, пока пробелы не оценены.
Если ваша текущая схема полагается только на короткое окно доступа, вручную скачивает каждый материал или не связывает файлы с исходным коммитом, она уязвима для потери контекста и задержек при расследовании. Постоянная Mac-среда может упростить работу с материалами, если в ней действительно настроены нужное хранение и проверка, но она не заменяет резервное копирование и правила доступа. При необходимости отдельного удалённого Mac оцените условия и варианты аренды на странице тарифов MacDate; если ваша задача требует постоянно высокой нагрузки или физических интерфейсов, сначала сравните аренду с локальной машиной. Выбирайте дополнительную среду только после того, как проверка загрузки и восстановления показала, чего именно не хватает текущему процессу.