Панель подключения
Не передавайте одни и те же учётные данные одновременно личному сеансу и автоматизированной задаче. Сначала создайте отдельную учётную запись с возможностью отзыва прав, затем подключите Runner.
Сначала определите, нужны ли вам командная строка, графический рабочий стол или автоматическое выполнение, затем проверьте учётные данные, инструменты и права доступа. VMRunner предоставляет выделенный физический узел Apple Silicon, а не виртуальную машину; используйте данные подключения из переданного заказа в консоли.
Не передавайте одни и те же учётные данные одновременно личному сеансу и автоматизированной задаче. Сначала создайте отдельную учётную запись с возможностью отзыва прав, затем подключите Runner.
Командная строка подходит для частых операций, которые можно автоматизировать; графический сеанс оставьте для интерактивных инструментов, а постоянные задачи передайте отдельному Runner. После распределения границы прав становятся яснее, а проблемы подключения легче локализовать.
Подходит для операций Git, установки зависимостей, проверки журналов, запуска сценариев и сборок. Использует меньше трафика, а после разрыва соединение проще восстановить.
Подходит для отладки интерфейса Xcode, проверки симулятора, работы с аудио- и видеопроектами и задач, где нужно наблюдать состояние окон. Чем выше разрешение, тем выше требования к локальной сети.
Подходит для тестирования, архивации, подписи и передачи артефактов. Runner работает под отдельной учётной записью, переменные среды передаются для каждой задачи и не используются совместно с личным рабочим столом.
При поиске причин проблем с удалённым подключением чаще всего время теряется не из-за сложной неисправности, а из-за неясных адреса узла, назначения учётной записи или состояния локальной сети. Перед первым подключением внесите следующие данные, чтобы затем определить уровень, на котором возникло изменение.
Идентификатор заказа, город узла, адрес узла, назначение учётной записи, результат проверки отпечатка хоста и время первого успешного подключения. Приватный ключ храните только на контролируемом устройстве, не добавляйте его в заявки, переписку или репозитории кода.
Проверьте статус заказа и данные подключения в консоли. До завершения передачи не подключайтесь по старому адресу или сведениям, полученным от других.
Для личных операций, автоматизированных задач и временной совместной работы используйте разные учётные записи или ключи с возможностью отзыва прав; не делитесь одними долгосрочными учётными данными.
Запишите задержку, потери пакетов и стабильность в проводной и беспроводной сетях. При задержках в графическом сеансе сначала сравните показатели с этой записью.
Учётная запись разработчика получает только права, необходимые для рабочего каталога; учётная запись Runner — доступ только к каталогу сборки, кэшу и нужным ресурсам подписи.
Цель первого подключения — не поскорее пропустить предупреждение, а убедиться, что текущий адрес действительно соответствует переданному узлу. После проверки отпечатка создайте псевдоним, настройте поддержание соединения и учётную запись с минимальными правами.
ssh-keyscan -t ed25519 NODE_ADDRESS
ssh USER@NODE_ADDRESS
Сверьте впервые полученный отпечаток с данными поставки в консоли. Если после смены адреса или переустановки системы отпечаток изменился, сначала выясните причину, а не удаляйте локальную запись и не продолжайте подключение.
ssh-keygen -t ed25519 -a 64
ssh-copy-id USER@NODE_ADDRESS
Создайте отдельный ключ для узла VMRunner. Защитите приватный ключ локальным паролем, не добавляйте его в репозиторий и не смешивайте с ключом развёртывания Runner.
Host vmrunner-build
HostName NODE_ADDRESS
User ACCOUNT_NAME
IdentityFile ~/.ssh/vmrunner_ed25519
ServerAliveInterval 30
ServerAliveCountMax 3
Псевдоним уменьшает риск ошибок при переписывании адреса. Параметры поддержания соединения только обнаруживают разрыв и не восстанавливают уже прерванные процессы; длительные задачи передавайте менеджеру задач или CI Runner.
Не используйте права администратора по умолчанию. Установку зависимостей, системную настройку и выполнение конвейеров разделяйте между учётными записями; после временного повышения прав сразу возвращайтесь к обычным и фиксируйте изменения.
Удалённый рабочий стол подходит для операций, где нужно видеть Xcode, симулятор или временную шкалу, но не должен заменять все фоновые задачи. Сначала установите стабильный сеанс с низким разрешением, затем постепенно повышайте качество.
Сначала выберите минимальное разрешение, на котором полностью видны окна инструментов, и оцените задержку ввода и обновление изображения.
При нестабильной сети уменьшите визуальные эффекты, оставив пропускную способность для отклика на действия и синхронизации файлов.
Проверьте часто используемые сочетания в безопасном текстовом окне, а затем переходите к подписи, удалению или публикации.
После прерывания сначала проверьте состояние старого сеанса, чтобы не запускать инструменты повторно и не занимать один рабочий каталог одновременно.
Не переносите сразу весь код, сертификаты, кэш и конвейеры. На каждом этапе сохраняйте проверяемый результат и переходите дальше только после успешной проверки предыдущего.
Сначала синхронизируйте репозиторий, файлы блокировки, необходимые ресурсы и сценарии сборки. Большой кэш и повторно загружаемые зависимости не включайте в первый этап миграции.
Проверьте Xcode, инструменты командной строки, менеджер пакетов, сертификаты и профили подготовки. Сначала выполните небольшую тестовую цель, не запускайте сразу полный конвейер выпуска.
Создайте отдельную учётную запись Runner, ограничьте область чтения переменных среды, выполните откатываемую тестовую задачу и передайте артефакты.
Один и тот же код может вести себя по-разному на двух Mac из-за различий в версиях инструментов, путях, кэше или правах. Перед первой рабочей сборкой зафиксируйте каждый пункт ниже.
xcodebuild -version
Версии совпадают с базовой конфигурацией проекта
xcode-select -p
Путь указывает на нужный Xcode
Runner не должен использовать рабочую учётную запись разработчика. Отдельная личность упрощает отзыв прав, очистку кэша и поиск владельца файлов, а также уменьшает влияние личного сеанса на конвейер.
Устранение неполадок CIУчётная запись получает доступ только к рабочей области репозитория, кэшу зависимостей, каталогу сборки и необходимым ресурсам подписи; повседневные права администратора не выдавайте.
Используйте процедуру регистрации платформы конвейеров для привязки текущего узла и задайте Runner метки, описывающие чип, систему и тип задачи.
Настройте переменные для репозитория, среды и области задачи. Скрывайте чувствительные значения в журналах и не выводите полный файл конфигурации в запись сборки.
Начните с цели с небольшим числом зависимостей и коротким временем выполнения; проверьте код завершения, результаты тестов, попадания в кэш и очистку рабочего каталога.
Зафиксируйте имя артефакта, коммит-источник, контрольную сумму и место хранения. После подтверждения успешной передачи расширяйте процесс до полного конвейера.
Перед вводом в эксплуатацию ещё раз проверьте учётные данные, область общего доступа, резервные копии и сведения о восстановлении. Цель — возможность отдельно отозвать любую учётную запись, сеанс или автоматизированную задачу.
После первой проверки смените исходный пароль или ключ, удалите ненужные временные разрешения и зафиксируйте назначение учётных данных и ответственного.
Каждый пользователь и каждый Runner должны использовать отдельную личность. При изменении прав отзывайте только соответствующую учётную запись, не затрагивая другие рабочие нагрузки.
Основной код храните в удалённом репозитории, а материалы подписи, ресурсы проекта и важные артефакты резервируйте по правилам команды и регулярно проверяйте восстановление.
Заблокируйте и закройте неиспользуемые графические сеансы, остановите временные службы и проверьте, что у фоновых задач есть определённый владелец.
Запишите идентификатор заказа, город узла, назначение учётной записи, версии инструментов и последнюю успешную сборку, чтобы служба поддержки быстро локализовала проблему.
Укажите идентификатор заказа, город узла, время события, шаги воспроизведения, очищенные журналы и ожидаемый результат. Не отправляйте приватные ключи, полные токены доступа, пароли сертификатов или неочищенные файлы конфигурации.
Сначала проверьте учётные данные, зафиксируйте версии инструментов и передайте тестовые артефакты, затем переносите рабочий проект на выделенный физический узел Apple Silicon.