Таймаут при запуске тестов 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 ответов:
Примечание: имена устройств изменены в 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 из
Это, наконец, позволило мне запустить xcode6 (Beta6) тесты на OSX Jenkins slave./System/Library/LaunchDaemons
в~/Library/LaunchAgents
и обновив пути внутри файла plist.
Мне наконец удалось найти хорошее простое решение. 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.
Одна вещь, которую вы можете попробовать, это поделиться экраном с машиной и нажать "Открыть" в этом всплывающем окне. вверх.
Если это все еще не работает, я бы попытался:
- сброс содержимого и настроек симулятора
- перезагрузите компьютер и убедитесь, что ни один симулятор не запущен при запуске (вы можете просто выбрать, чтобы не открывать повторно любое приложение при перезагрузке)