it-swarm.com.ru

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

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

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

Очень признателен!

29
Kelvin

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

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

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

А теперь пошагово:

1. убедитесь, что у вас есть графический интерфейс

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

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

2. начать Дженкинс раб

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

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

Поэтому вам нужно создать запланированное задание и настроить его для запуска вашего клиента Jenkins с помощью Java Web Start .

3. использовать его

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

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

22
Peter Schuetze

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

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

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

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

EDIT: Если вы получаете черные снимки экрана (например, при использовании Selenium), создайте пакетный файл, который отключает удаленный рабочий стол, вместо закрытия сеанса RDP с помощью обычной кнопки X:

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

Следующая вещь сделала свое дело для меня:

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

  • 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.

2
dred17

Поскольку приведенные выше решения казались немного излишними, поэтому я использовал этот подход:

  1. Отключить службу Jenkins
  2. Запустите Jenkins из командной строки, используя Java -jar C:\Program Files (x86)\Jenkins\jenkins.war

По какой-то причине мне пришлось установить все плагины и все такое при запуске, поэтому я рекомендую создать резервную копию, для этого есть плагин. Удачи. :)

0
Daniel

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

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

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

0
Víctor Gómez Molina

Вам все еще нужно использовать RDP, но в моем случае мы можем использовать loopback RDP в той же виртуальной машине.

Процедура:

  1. В виртуальной машине создайте две разные учетные записи и создайте подчиненное устройство Jenkins для обеих учетных записей.

Теперь у вас будет два подчиненных Jenkins для двух учетных записей в одной виртуальной машине.

раб 1 - аккаунт 1

раб 2 - счет 2

  1. Включить несколько RDP следуйте руководству https://www.serverwatch.com/server-tutorials/how-to-enable-concurrent-remote-desktop-sessions-in-windows.html

  2. В подчиненном устройстве 2 (с учетной записью 2) выполните команду rdp для подключения к подчиненному устройству 1 (с учетной записью 1), как показано ниже Start/b "" "C:\RDP\rdp.exe"/v: 127.0. 0,2/домен: \/u: admin/p: xxxx/полноэкранный режим/ш: 1920/ч: 1200 

127.0.0.2 очень важно, это петлевое соединение для RDP

Поместите указанную выше команду в задание Jenkins с именем, например «OpenRDP_ToVMXXX», и тогда вы сможете запустить любой тест на ведомом устройстве 1 с включенным графическим интерфейсом, наслаждайтесь.

0
August