Распределение инженерных проблем

Сначала определите уровень сбоя, затем отправьте воспроизводимую проблему

Здесь собраны решения для подключений к выделенным физическим Mac-узлам, сборок Xcode, CI/CD runner, хранилища, сети узлов и биллинга. Сначала выполните базовые проверки по порядку; если это не поможет, отправьте заказ, параметры окружения и обезличенные логи, чтобы сократить число уточнений.

6 категорий
Точки входа
5
Регионов доступных узлов
7
Обязательных данных для обращения
Панель диагностики сборок BUILD / CHECK
Ожидание логов
Подключение Адрес, порт, учётные данные
Сначала проверьте
Окружение Система, Xcode, SDK
Затем сопоставьте
Сборка Зависимости, подпись, кэш
Воспроизведите
Доставка Архив, загрузка, артефакты
Проверьте
Рекомендуемый порядок Подключение → окружение → сборка → доставка
Все разделы поддержки

Выберите путь проверки по симптомам

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

Проблемы с подключением

Адрес доступен, но сеанс не устанавливается

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

Открыть шаги проверки подключения
Сборка Xcode

Сбой компиляции, архивации или загрузки

Зафиксируйте этап сбоя, затем проверьте свободное место, версии Xcode и SDK, lock-файл зависимостей, материалы подписи и полный лог сборки. В первую очередь сохраните первую фактическую ошибку.

Посмотреть порядок диагностики сборки
CI/CD

Runner отключён или задача не запускается

Проверьте процесс службы runner, статус регистрации, соответствие тегов, права рабочей директории и предел параллелизма. Статус «онлайн» на платформе не гарантирует, что теги текущей задачи будут найдены.

Проверить конфигурацию runner
Расширение хранилища

Кэш и артефакты сборки занимают всё место

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

Частые вопросы о хранилище
Миграция узла

Изменилось расположение команды или репозитория

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

Сравнить узлы и сеть
Проблемы с биллингом

Нужно проверить заказ, период или статус оплаты

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

Отправить обращение по биллингу через консоль
Первоначальная настройка

Сначала зафиксируйте базовую конфигурацию узла, затем устанавливайте инструменты проекта

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

  1. 01

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

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

    Критерий готовности: сеанс стабильно устанавливается, и вы подтвердили подключение к узлу, соответствующему заказу.
  2. 02

    Настройте безопасность учётных записей

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

    Критерий готовности: временные учётные данные больше не используются, а назначения обычной и административной учётных записей разделены.
  3. 03

    Зафиксируйте системную и инженерную базу

    Запишите версию macOS, чип, доступное место на диске, версию Xcode, путь к инструментам командной строки и целевой SDK. Команда должна добавить эти данные в собственное руководство по сборке и эксплуатации.

    Критерий готовности: различия между локальной и облачной сборкой объясняются одним и тем же набором версий.
  4. 04

    Установите зависимости и runner

    Установите зависимости по lock-файлу проекта, задайте отдельный каталог кэша, затем зарегистрируйте self-hosted runner. Для первой задачи используйте низкий параллелизм и проверьте подпись, архивацию и путь загрузки.

    Критерий готовности: минимальная задача сборки выполняется повторно и оставляет полный лог.
Базовая конфигурация

Рекомендуемый список окружения

  • Полные версии macOS и Xcode
  • Целевой SDK и путь к инструментам командной строки
  • Менеджер зависимостей и версия lock-файла
  • Имя runner, теги и рабочая директория
  • Каталог кэша и максимальное число параллельных задач
Первичная проверка

Подтвердите цепочку минимальной задачей

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

Подготовка к проверке подключения
Диагностика сбоев сборки

Исключайте причины по цепочке, не меняя шесть переменных одновременно

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

01

Свободное место на диске

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

Ёмкость
02

Сертификаты и профили подготовки

Убедитесь, что выбранная проектом команда, действующий сертификат, профиль подготовки и Bundle Identifier согласованы. Не прикладывайте приватный ключ подписи к логам или обращениям.

Подпись
03

Версии Xcode и SDK

Зафиксируйте путь к Xcode, фактически выполняющему сборку, убедитесь, что инструменты командной строки не указывают на другую версию, и проверьте наличие целевого SDK, требуемого проектом.

Версия
04

Кэш зависимостей

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

Зависимости
05

Полный лог сборки

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

Лог
06

Количество параллельных задач

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

Параллелизм

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

Отправить обращение по проблеме сборки
Поддержка CI/CD

Сделайте runner обнаруживаемым, восстанавливаемым и управляемым

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

A1

Регистрация

Используйте уникальное имя runner для каждого узла и запишите репозиторий или организацию, область регистрации, рабочую директорию и сервисную учётную запись. При миграции узла сначала отмените старую регистрацию.

A2

Теги

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

A3

Поддержание службы

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

A4

Каталог кэша

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

A5

Минимальные права

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

Порядок проверки отключённого runner

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

Отправить обращение по runner
Краткий словарь

Сначала согласуйте термины, затем описывайте проблему

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

Физический узел
Физическое устройство Apple Silicon Mac, на котором непосредственно работают macOS, Xcode и задачи сборки. Узел — единица поставки оборудования, а не общий виртуальный ресурс.
Выделенный
Ресурсы узла, соответствующего одному заказу, используются этим клиентом; CPU, память и локальное хранилище не смешиваются с задачами других клиентов.
Не виртуальная машина
Система работает непосредственно на физическом Mac, а не на устройстве, разделённом на несколько виртуальных экземпляров. Характеристики оборудования напрямую соответствуют конфигурации заказа.
VNC
Способ удалённого просмотра и управления графическим интерфейсом macOS. Адрес, порт, учётную запись и параметры шифрования необходимо указать согласно данным подключения.
Self-hosted runner
Runner, самостоятельно зарегистрированный командой на платформе CI/CD и выполняющий задачи на выделенном узле; команда контролирует версии инструментов, кэш и стратегию параллелизма.
Кэш сборки
Повторно создаваемые данные, сокращающие повторные загрузки или компиляцию, включая кэш зависимостей и DerivedData. При повреждении кэш должен безопасно пересоздаваться.
Сертификат подписи
Конфиденциальный материал, используемый в сборке и доставке. При диагностике описывайте только имя и состояние сертификата и текст ошибки; не загружайте приватный ключ в обращение.
Регион узла
Регион расположения физического узла. При выборе учитывайте расположение разработчиков, репозитория, цели доставки и направление передачи больших файлов.
Диагностика узла и сети

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

VMArm предлагает 5 регионов узлов: Сингапур, Япония (Токио), Южная Корея (Сеул), Гонконг и запад США. Сравнивайте удалённую работу, получение репозитория, загрузку зависимостей и передачу артефактов.

SG

Сингапур

Подходит командам Юго-Восточной Азии и цепочкам репозиториев и доставки, ориентированным на этот регион.

JP

Япония (Токио)

Подходит командам Японии и Восточной Азии, позволяя совместить работу с удалённым рабочим столом и доступ к региональным ресурсам сборки.

KR

Южная Корея (Сеул)

Подходит разработчикам, зеркалам зависимостей и процессам доставки в Южной Корее и Северо-Восточной Азии.

HK

Гонконг

Подходит командам Южного Китая и Юго-Восточной Азии; перед выбором одновременно проверьте цепочки репозитория и удалённого сеанса.

US-W

Запад США

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

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

Сразу предоставьте полный контекст диагностики

Цель обращения — не доказать наличие проблемы, а помочь специалисту определить тот же заказ, узел, момент времени и этап сбоя.

Диагностическая карточка 7 ОБЯЗАТЕЛЬНЫХ ПОЛЕЙ
01 Номер заказа

Нужен для подтверждения конфигурации, расчётного периода и данных поставки.

02 Регион узла

Укажите Сингапур, Японию (Токио), Южную Корею (Сеул), Гонконг или запад США.

03 Время возникновения

Укажите время с часовым поясом и сообщите, воспроизводится ли проблема.

04 Версия системы

Укажите полную версию macOS, а не только название основной версии.

05 Версия Xcode

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

06 Шаги воспроизведения

Начните с нормального состояния и последовательно опишите фактические клики или команды.

07 Обезличенный лог

Сохраните контекст ошибки и код выхода, удалив токены, приватные ключи и другие конфиденциальные данные.

Существующий заказ

Отправить обращение через консоль

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

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

Сначала опишите нагрузку и масштаб

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

Посмотреть каналы связи

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

Границы поддержки и порядок ответа

От подтверждения проблемы до закрытия обращения: каждый шаг даёт результат

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

  1. 01

    Классификация проблемы

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

  2. 02

    Подтверждение получения

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

  3. 03

    Обновление диагностики

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

  4. 04

    Условия закрытия

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

В зоне поддержки

  • Проверка заказа и статуса поставки узла
  • Диагностика адреса VNC, порта и подключения сеанса
  • Базовая диагностика системы узла, диска, сети и прав
  • Проверка состояния службы runner и общей конфигурации
  • Разъяснение расчётного периода и статуса оплаты

Требует совместной проверки командой проекта

  • Логика бизнес-кода и поведение сторонних SDK
  • Пользовательские скрипты проекта и внутренние источники зависимостей
  • Процессы подписи и публикации, определённые командой
  • Права репозитория, стратегия ветвления и условия запуска задач
  • Критерии приёмки бизнес-результата сборки
Следующий шаг

Перенесите следующую сборку на выделенный физический Mac-узел

Выберите VMArm M4 Core или VMArm M4 Plus и регион узла: Сингапур, Япония (Токио), Южная Корея (Сеул), Гонконг или запад США. Фактическая доступность определяется актуальным ответом консоли.