Подтвердить что ты не робот

Postbuild UIAutomation script не работает в jenkins

Я пытаюсь выполнить сквозную автоматизацию для проекта iOS. Моя цель - автоматизировать процесс непрерывной интеграции с прикреплением скриптов UIAutomation в качестве действия post build. Поэтому с момента, когда пользователь проверяет свой код в SVN и пока мы не получим результат теста автоматизации, все будет автоматизировано.

Jenkins установлен на моем локальном компьютере и работает на localhost.
Теперь у меня есть автоматизированный процесс сборки через Jenkins, а с другой стороны у меня есть готовая оболочка script, которая будет запускать скрипты java UIAutomation java на выходе сборки.
Когда я использую свою оболочку script в качестве действия пост-сборки, я получаю ошибку при запуске команды инструмента (написанной внутри оболочки script), но если я запустил этот script вручную через терминал, тогда он отлично работает.

instruments[64703:60f] -[NSAlert alertWithError:] called with nil NSError. A generic error message will be displayed, but the user deserves better.
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL. Mon Feb  6 13:15:20 inpunml310743 instruments[64703] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged. 2012-02-06 13:15:20.179 instruments[64703:60f] Recording cancelled : At least one target failed to launch; aborting run Instruments Trace Error : Failed to start trace. Build step 'Execute shell' marked build as failure Finished: FAILURE

то я пробовал эту команду с sudo, тогда я получил следующую ошибку sudo: нет tty присутствует и не указана запрошенная программа

Пожалуйста, дайте мне знать, как я могу выполнить эти команды успешно, только этот шаг оставлен в моей задаче.

4b9b3361

Ответ 1

Дженкинс по умолчанию устанавливается как LaunchDaemon, что означает, что у него недостаточно полномочий для запуска WindowsServer.

Вам нужно настроить его как LaunchAgent:

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo mv /Library/LaunchDaemons/org.jenkins-ci.plist /Library/LaunchAgents/org.jenkins-ci.plist

Затем войдите в систему как Дженкинс и держите сессию открытой.

Если вы не знаете пароль Дженкинса, вы можете изменить его:

sudo passwd jenkins

Ответ 3

Извините - не было времени, чтобы ответить на полный вопрос, обновится позже....

Это возможно, если вы запускаете jenkins в качестве пользовательского приложения, а не как deamon - это может пригодиться (https://github.com/stisti/jenkins-app) Я не пробовал, но похоже, что это должно сработать - я пошел по другому маршруту, настраивая всегда зарегистрированного пользователя, который запускал jenkins из логина script, это означало, что мне пришлось переустанавливать jenkins, но мне удалось получить его и запустить... слово предупреждения от кого-то, что было через него, вы используете инструменты для автоматического тестирования? Если это так, вам нужно сделать какое-то преобразование на выходе, чтобы оно отображалось в Дженкинсе.

Ответ 4

У нас есть экземпляр Jenkins Linux, который строится на подчиненном Mac через SSH. Одним из интересных требований, которые мы заметили с этой ошибкой, является то, что пользователь сборки на подчиненном устройстве должен быть зарегистрирован в консоли, чтобы все работало правильно.

Кроме того, мы должны были сделать пользователя сборки администратором, разрешения разработчика были недостаточными.

Подробнее см. здесь:

UIAutomation: не удалось разрешить права со статусом: -60007