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

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

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

команда

xcodebuild-имя проекта рабочей области.xcworkspace-схема BGO_Tests-назначение '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."

Prelaunching

я дошел до точки, когда то, что я предложил там, больше не работало. В дополнение к внесению изменений, упомянутых здесь, вам необходимо запустить симулятор 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>' 

старый пост

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

Apple следить за идентификатором ошибки# 18001199:

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

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

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

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


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

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

DevToolsSecurity -включить

sudo dscl . - добавить /группы / _developer GroupMembership "пользователь, который запускает sim"

система записи authorizationdb безопасности.привилегия.taskport is-developer

Ссылки здесь и здесь.

недавно я узнал, что если вы устанавливаете новую версию 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. Затем я установил Jenkins slave в качестве службы launchd.

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

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

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


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

обходной путь для таймаута SSH via 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. перезагрузите машину и убедитесь, что симулятор не работает при запуске (вы можете просто не открывать любое приложение при перезапуске)