Ошибка при попытке запуска автоматизации пользовательского интерфейса script от jenkins
Я использую Xcode 6.1. И мне нужно запустить автоматизацию пользовательского интерфейса script от jenkins в качестве действия post build. Ниже приведена команда, которую я использую.
instruments -t $TRACETEMPLATE -w $DEVICE $APP_PATH -e UIASCRIPT $SCRIPT -e UIARESULTSPATH $RESULTS_PATH | grep "<" > test-reports/test-results.xml
Когда я запускаю эту ошибку, jenkins выдает следующую ошибку.
Не удалось разрешить права (0x1) со статусом: -60007.
2014-11-12 16: 31: 30.685 инструментов [488: 2607] - [XRSimulatorDevice prepareConnection:]: невозможно авторизовать имитированный демон (99637): 8
Ошибка трассировки инструментов: Target не удалось запустить: разрешение на отладку com.test.app было отклонено.
Любая помощь очень ценится.
Ответы
Ответ 1
-
Пользователь, который вызывает Инструменты, должен иметь разрешения разработчика. Пользователь должен находиться в группе _developer
.
-
Должны быть установлены разрешения безопасности, позволяющие пользователю получать доступ к инструментам. См. Справочную страницу для DevToolsSecurity
-
Пользователь должен войти на сервер окна, чтобы использовать симулятор. Как это сделать, это будет зависеть от конфигурации Jenkins и ОС для этого пользователя. В более старых версиях MacOS, создающих SSH-соединение обратно в машину и работающие с инструментами через это соединение, как правило, работали. YMMV.
Обратите внимание, что любой из вышеперечисленных шагов увеличивает права пользователя Jenkins, что является следствием безопасности.
Ответ 2
Я получил почти идентичное сообщение об ошибке, и, похоже, потому, что, когда Jenkins запускается как демон запуска, он не имеет доступа к экрану, даже если вы входите в систему как "jenkins".
Я нашел решение, прочитав это обсуждение: https://issues.jenkins-ci.org/browse/JENKINS-14421
Вы можете запустить Jenkins из терминала с помощью java -jar jenkins.war
, или вы можете создать агент запуска, который запускается как зарегистрированный пользователь и имеет доступ к экрану пользователя.
Я получил последнее решение, переместив /Library/LaunchDaemons/org.jenkins-ci.plist
в /Library/LaunchAgents/org.jenkins-ci.plist
и удалив ключ UserName
и значение из plist. Теперь Jenkins не запускается автоматически, когда я загружаю компьютер, но он запускается, когда я вхожу на рабочий стол, что требуется для запуска тестов автоматизации UI в любом случае.
Похоже, что Дженкинс по-прежнему не может запустить приложение Simulator, но если Simulator уже запущен, сценарии автоматизации пользовательского интерфейса идут нормально.
Ответ 3
Я также получил это сообщение об ошибке. Перемещение службы от LaunchDaemons до LaunchAgents не решило проблему. Мое решение было следующим:
- удалите службу, удалив
/Library/LaunchAgents/org.jenkins-ci.plist
файл
-
создайте приложение iOS с помощью Automator. (По-моему, существует по умолчанию):
- Я выбрал "Библиотека" → "Утилиты" → "Shell Script".
- Введите содержимое
/Library/Application Support/Jenkins/jenkins-runner.sh
.
- Поместите
export JENKINS_HOME=/path/to/jenkins
вверху.
- Сохранить приложение где-нибудь
-
Перейдите в раздел Настройки → Пользователи и группы → выберите пользователя → Добавить сохраненное приложение.
Таким образом, jenkins запускается как приложение после входа в систему и имеет все привилегии любого другого приложения.