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 присутствует и не указана запрошенная программа
Пожалуйста, дайте мне знать, как я могу выполнить эти команды успешно, только этот шаг оставлен в моей задаче.
Ответы
Ответ 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
Ответ 2
Jenkins работает как демон и поэтому не может подключаться к серверу окон. Подробнее здесь http://developer.apple.com/library/mac/#technotes/tn2083/_index.html.
Ответ 3
Извините - не было времени, чтобы ответить на полный вопрос, обновится позже....
Это возможно, если вы запускаете jenkins в качестве пользовательского приложения, а не как deamon - это может пригодиться (https://github.com/stisti/jenkins-app) Я не пробовал, но похоже, что это должно сработать - я пошел по другому маршруту, настраивая всегда зарегистрированного пользователя, который запускал jenkins из логина script, это означало, что мне пришлось переустанавливать jenkins, но мне удалось получить его и запустить... слово предупреждения от кого-то, что было через него, вы используете инструменты для автоматического тестирования? Если это так, вам нужно сделать какое-то преобразование на выходе, чтобы оно отображалось в Дженкинсе.
Ответ 4
У нас есть экземпляр Jenkins Linux, который строится на подчиненном Mac через SSH. Одним из интересных требований, которые мы заметили с этой ошибкой, является то, что пользователь сборки на подчиненном устройстве должен быть зарегистрирован в консоли, чтобы все работало правильно.
Кроме того, мы должны были сделать пользователя сборки администратором, разрешения разработчика были недостаточными.
Подробнее см. здесь:
UIAutomation: не удалось разрешить права со статусом: -60007