Таймаут при запуске тестов xcodebuild под Xcode 6 через SSH


Похоже, у меня возникли проблемы с интеграцией Xcode6 с jenkins, в настоящее время у меня есть эта настройка и работа с Xcode 5.

С xcode 6 работает удаленно через SSH время ожидания симулятора, когда я запускаю локально, это успешно.

Команда

Xcodebuild-имя проекта рабочей области.xcworkspace-scheme BGO_Tests-destination 'platform=iOS Simulator, name=iPhone 5s' - derivedDataPath ./ Build clean test

2014-08-19 10:46:36.591 xcodebuild[33966:381f] iPhoneSimulator: тайм-аут ожидания 120 секунд для загрузки > тренажера, текущее состояние равно 1.

Тестирование не удалось: Тестовая цель BGO_Tests обнаружила ошибку (тайм-аут ожидания загрузки симулятора 120 секунд, текущее состояние 1

Протестировано с недавним Xcode 6 beta 6

5 39

5 ответов:

Примечание: имена устройств изменены в Xcode 7, поэтому вы больше не указываете их с помощью iPhone 5 (9.1 Simulator), а скорее iPhone 5 (9.1).

Используйте xcrun instruments -s, чтобы получить текущий список устройств, а затем вы можете предварительно запустить его с помощью:

xcrun instruments -w "iPhone 5 (9.1)" || echo "(Pre)Launched the simulator."

Предварительная подготовка

Я дошел до того, что то, что я предложил там, внизу, больше не работало. В дополнение к внесению изменений, упомянутых здесь, вам нужно запустить симулятор xcodebuild ожидает Перед xcodebuild выполняется:
# First get the UDID you need
xcrun instruments -s

# Then launch it
open -a "iOS Simulator" --args -CurrentDeviceUDID <sim device UDID>

# and wait some time....
sleep 5

# Then launch your unit tests
xcodebuild [...] -destination 'platform=iOS Simulator,name=<device name matching the UDID>' 

Старый post

Эта ошибка исправлена в Xcode 6.3 и выше. Если вы испытываете аналогичные проблемы в более новом Xcode, это, скорее всего, еще одна ошибка.

Последующие действия Apple в отношении идентификатора ошибки# 18001199:

Контекст, предоставляемый LaunchDaemons, не поддерживается для запуска GUI приложения. Служба SSH и настройка по умолчанию для Jenkins являются оба реализованы как LaunchDaemons. В более ранних версиях Xcode 5 xcodebuild может выполнять тесты на симуляторе iOS в этом контексте, но это никогда не было поддерживаемой конфигурацией, и как вы заметили, что больше не работает с Xcode 6.

В отличие от LaunchDaemons, LaunchAgents предоставляют контекст, в котором вы можете запускать GUI приложения - если пользователь вошел в систему в то время, с окном сервер / Аква сессии. Преобразование конфигурации Дженкинса из будучи LaunchDaemon к тому, чтобы быть LaunchAgent избежал бы сообщенного вопрос. Вы также можете использовать launchd для запуска тестов на симуляторе iOS из СШ сеанс, либо путем создания LaunchAgent и вручную загрузка / запуск этого, или с помощью "launchctl submit".

Хорошо, после еще некоторого копания вокруг комментариев здесь (большое спасибо Opal ), я обнаружил, что запуск ведомого устройства через JNLP вместо этого работает.

Как уже упоминалось многими, в настоящее время невозможно запустить модульный тест по SSH, поэтому вы можете обратиться к агенту JNLP, пока Apple не исправит его.


При подключении если JNLP все еще не решает ее, попробуйте решение, упомянутое в этом комментарии .

То есть: запустите их в командной строке:

DevToolsSecurity-enable

Sudo dscl . -добавление /групп/_developer группы принадлежности "пользователь-который-работает-в-сим"

Система записи Security authorizationdb.привилегия.taskport is-разработчик

Смотрите ссылкиздесь издесь .

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

Я решил это на Xcode 5, выполнив шаги здесь, по сути, выполнив:

sudo security authorizationdb write system.privilege.taskport allow

Это устранит один класс этих всплывающих окон аутентификации. Вам также нужно будет запустить:

sudo DevToolsSecurity -enable

Однако, как только я обновился до Xcode 6, я теперь получаю бесконечное зависание при попытке запустить тесты xcodebuild по SSH. Они продолжают работать просто отлично, пока я не войду в консоль и не запущу их с клавиатуры.

Я столкнулся с той же проблемой. Моя рабочая теория заключается в том, что SSH на OSX запускается как LaunchDaemon, и LaunchDaemons не разрешается представлять пользовательский интерфейс; Ссылка.

Я смог обойти эту проблему, используя Java Web Start для запуска Jenkins slave. Затем я установил Jenkins slave в качестве службы запуска.

К сожалению, ведомый Дженкинс затем устанавливает себя как - вы уже догадались-LaunchDaemon, что приводит к той же самой проблеме невозможности запуска тесты; Ссылка.

Я решил эту проблему, переместив подчиненные файлы Jenkins LaunchDaemon plist и jar из /System/Library/LaunchDaemons в ~/Library/LaunchAgents и обновив пути внутри файла plist.

Это, наконец, позволило мне запустить xcode6 (Beta6) тесты на OSX Jenkins slave.

Мне наконец удалось найти хорошее простое решение. JNLP вызывал многочисленные проблемы с нашим сервером jenkins.

Обходной путь для таймаута SSH через https://corner.squareup.com/2015/07/ios-build-infrastructure.html

"Mavericks (10.9) и Yosemite (10.10) определяют, может ли процесс получить доступ к крючкам доступности через происхождение процесса доступа. Помещая launchd в список разрешенных процессов, процессы, запущенные через SSH или Jenkins имеют доступ к специальным крючкам по всей системе. Для этого вы можете изменить базу данных TCC, в соответствии с этой сутью. Перезагрузка необходима, чтобы изменения вступили в силу."

#!/bin/bash

# This will add lauchd to the list of allowed processes for accessibility access
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceAccessibility','/sbin/launchd',1,1,1,NULL)"

# This outputs the rows in the TCC database
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'

echo "Restart is required for these changes to take effect"

Обновление 8/02/2016 Это теперь исправлено в Xcode 7.2.1 ("инструмент командной строки" xcodebuild test " больше не будет тайм-аута в ожидании симулятора.приложение для запуска")

Я уже видел эту ошибку раньше, одна из возможностей заключается в том, что, поскольку вы, вероятно, загрузили бета-версию Xcode6 из интернета (а не из appstore, поскольку он еще не доступен), машина, на которой вы пытаетесь запустить его, покажет всплывающее окно с вопросом, действительно ли вы хотите открыть это приложение из интернета.

То же самое произойдет, когда xcodebuild попытается запустить приложение iPhone simulator.

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

Если это все еще не работает, я бы попытался:

  1. сброс содержимого и настроек симулятора
  2. перезагрузите компьютер и убедитесь, что ни один симулятор не запущен при запуске (вы можете просто выбрать, чтобы не открывать повторно любое приложение при перезагрузке)