Служебная служба Windows Jenkins не взаимодействует с рабочим столом

Я следил за этим руководством, чтобы установить slav-jenkins на окна 8 в качестве сервиса:

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service#InstallingJenkinsasaWindowsservice-InstallSlaveasaWindowsservice%28require.NET2.0framework%29

Мне нужно запустить задание, взаимодействующее с рабочим столом (запустите приложение, открывающее браузер и т.д.). Поэтому после того, как я установил ведомое устройство в качестве службы (запущенный jnlp, загруженный из мастера), я изменил службу "Вход в систему" ​​на "Разрешить взаимодействие с дисплеем".

По какой-то причине его можно включить только для "Локальной учетной записи системы", хотя рекомендуется использовать службу как определенный пользователь, например. Дженкинс.

Но ничего не происходит, когда я выполняю задание, браузер не открывается. Если я вместо этого остановлю службу и просто запустил ведомый через файл jnlp, работа будет выполнена нормально - браузер открывается.

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

Ответ 1

Службы запускаются с Vista в сеансе 0, а первый пользователь теперь находится в сеансе 1. Таким образом, вы больше не можете взаимодействовать. Это называется Session 0 Isolation.

Microsoft объясняет это здесь и здесь. Вы должны использовать вторую программу, которая использует IPC для связи с Сервисом.

Ответ 2

Чтобы решить эту проблему, установите Windows Auto Logon, как я объясню здесь: 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 или Sikuli), создайте пакетный файл, который отключает удаленный рабочий стол, вместо закрытия сеанса RDP с помощью обычной кнопки X:

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

Ответ 3

У меня было много проблем с Jenkins в Windows с помощью службы. Вместо этого теперь отключите службу и запустите ее из CMD.

Итак, откройте CMD.

cd C:\Program Files (x86)\Jenkins

java -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar
jenkins.war --httpPort=9091

Ответ 4

Попробуйте запустить подчиненный сервер Java непосредственно при запуске, а затем использовать что-то для мониторинга и перезапуска, если сервер опустится (например, Kiwi Restarter).

Ответ 5

Пожалуйста, проверьте службы (@TestNode), убедитесь, что служба "Обнаружение интерактивных служб" ЗАПУСКАЕТСЯ, по умолчанию для типа запуска установлено значение "Вручную", вам также может потребоваться автоматическая настройка.

enter image description here

После запуска службы при запуске теста в тесте Node вы увидите что-то вроде ниже: enter image description here

Нажмите на него и выберите просмотр сообщения

enter image description here

Вы увидите, что там происходят действия. Надеюсь, это поможет: D

Примечание. Если вы входите в систему с другой учетной записью и не можете просмотреть запрос об обнаружении интерактивных служб, перезапустите службу еще раз.

Ответ 6

My Jenkins Service работает как пользовательский "jenkins", и все, что я делал, это создавать папки рабочего стола в папке C:\Windows\system32\config\systemprofile\desktop, а если 64-разрядная версия Windows также находится в C:\Windows\SysWOW64\config\systemprofile\desktop - тогда он отлично работает.

Ответ 7

Убедитесь, что папки Desktop созданы как таковые:

  • %WINDOWS%/System32/config/systemprofile/Desktop
  • %WINDOWS%/SystemWOW64/config/systemprofile/Desktop

Присутствие этих элементов иногда может быть обязательным при запуске некоторого программного обеспечения Java как службы.