Служебная служба 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 как службы.