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

Как запустить тесты GUI на ведомом устройствах jenkins без подключения к удаленному рабочему столу?

У меня есть агент jenkins, настроенный в окне 7 и jenkins server на Linux. Я запускаю тестирование GUI на агенте Windows. Он отлично работает, если к нему подключено удаленное подключение к рабочему столу, но в противном случае он не работает. Я нашел эту ссылку, Дженкинс по Windows и графическим интерфейсам без RDC

Но предоставленное там решение довольно расплывчато. Кажется, единственное решение состоит в том, чтобы каким-то образом заставить сервер Jenkins открывать доступ к удаленному рабочему столу в любое время. Но я не могу найти такой вариант. Может кто-нибудь, пожалуйста, ясно научить меня, как решить эту проблему?

Очень ценно!

4b9b3361

Ответ 1

Ваши подчиненные машины должны быть на рабочем столе, прежде чем тест может работать должным образом. У нас была та же проблема.

Решение состояло в том, чтобы запустить тестовую машину и автозапуск к рабочий стол. Чтобы гарантировать, что тест ТОЛЬКО начнется после рабочего стола был доступен, мы добавили запланированную задачу, настроенную на запуск при входе пользователя, который запустит подчиненную Jenkins через Java Web Start. Сюда, Дженкинс видел бы раба только после того, как настольный компьютер работал. После что все работает нормально.

Это победный ответ на вопрос, с которым вы связались, и очень ясно, что делать. Вся установка находится за пределами Дженкинса. Джейсон Слэйджер описал, как он автоматизировал пользователя, регистрирующегося на настольной машине Windows, а затем запустил подчиненный Jenkins в сеансе пользователя.

И теперь шаг за шагом:

1. убедитесь, что у вас есть GUI evailable

Решение состояло в том, чтобы запустить тестовую машину и автозапуск на рабочий стол

Настройте стандартный рабочий стол Windows для автоматического входа в систему определенного пользователя при запуске Windows. Таким образом, никто не должен физически входить в рабочий стол. (см. Как включить автоматический вход в систему Windows 7)

2. запустите Jenkins slave

Вам нужно запустить подчиненный Jenkins в пределах этой пользовательской настройки. В противном случае подчиненный Jenkins не будет иметь доступа к компонентам Windows UI (или, другими словами, не может взаимодействовать с рабочим столом).

Чтобы гарантировать, что тест ТОЛЬКО запускается после рабочего стола был доступен, мы добавили запланированную задачу, настроенную на запуск при входе пользователя, который запустит подчиненный Jenkins через Java Web Start.

Итак, вы должны создать запланированную задачу и настроить его для запуска Клиент Jenkins с использованием Java Web Start.

3. используйте его

Таким образом, Дженкинс только увидит раба, как только рабочий стол будет запущен. После что все работает нормально.

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

Ответ 2

Чтобы решить эту проблему, установите автоматический автозапуск Windows, как я объясню здесь: https://serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130#606130

Затем создайте стартовую партию для подчиненного Jenkins (поместите ее в каталог Jenkins), которая запустит консоль на рабочем столе и позволит запускать задания GUI:

java -jar slave.jar -jnlpUrl http://{Your Jenkins Server}:8080/computer/{Your Jenkins Node}/slave-agent.jnlp

(slave.jar можно загрузить с http://{Your Jenkins Server}: 8080/jnlpJars/slave.jar)

РЕДАКТИРОВАТЬ: Если вы получаете черные скриншоты (например, при использовании Selenium), создайте пакетный файл, который отключает удаленный рабочий стол, вместо закрытия сеанса RDP с помощью обычной кнопки X:

%windir%\system32\tscon.exe %SESSIONNAME% /dest:console

Ответ 3

Следующая вещь сделала для меня трюк:

В Jenkins выполните команду оболочки Windows:

  • cmdkey /generic:TERMSRV/<servername> /user:<username> /pass:<password>
  • mstsc /v:<servername> /w:<width> /h:<height>
  • cd <path to your pom.xml>
  • <maven command> (например, mvn test -Dfiles_to_run=groupLaunch.xml
  • cmdkey /delete:TERMSRV/<servername>

Он создает реальный сеанс mstsc (Win-to-Win) с заданной шириной и высотой в вашем виртуальном сеансе mstsc (Jenkins-to-Win), работающем от Jenkins.

Ответ 4

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

Я открыл RDP-соединение с VM в другой VM (VM2). Я оставил первое соединение открытым внутри VM2 и отключился от него.

Это сработало, но это означает наличие двух виртуальных машин.