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