Jenkins windows slave服务不与桌面交互

u12*_*123 15 service jenkins windows-8

我已按照本指南在Windows 8上安装jenkins slave作为服务:

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

我需要运行与桌面交互的作业(运行打开浏览器的应用程序等).因此,在我将slave作为服务安装后(运行从master下载的jnlp),我已将服务"Log on"更改为"允许与显示交互".

由于某种原因,它只能为"本地系统帐户"启用此功能,即使它建议以指定用户身份运行服务,例如.詹金斯.

但是当我执行作业时没有任何反应,浏览器没有打开.如果我改为停止服务并通过jnlp文件启动从服务器,则作业运行正常 - 浏览器打开.

在运行jenkins windows slave作为服务时,有没有人与桌面交互?

mag*_*981 9

服务自会话0中的Vista运行,第一个用户现在在会话1中.因此您无法再进行交互.这称为会话0隔离.

微软在这里这里解释了这个.您必须使用第二个程序,它使用IPC与服务进行通信.


Noa*_*nos 7

解决它设置Windows自动登录,我在这里解释:https: //serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130#606130

然后为Jenkins slave创建一个启动批处理(将它放在Jenkins目录中),这将在桌面上启动它的控制台,并允许GUI作业运行:

java -jar slave.jar -jnlpUrl http://{Your Jenkins Server}:8080/computer/{Your Jenkins Node}/slave-agent.jnlp
Run Code Online (Sandbox Code Playgroud)

(您可以从http:// {Your Jenkins Server}下载slave.jar:8080/jnlpJars/slave.jar)

编辑: 如果您获得黑屏幕截图(例如,使用Selenium或Sikuli时),请创建一个断开远程桌面的批处理文件,而不是使用常规X按钮关闭RDP会话:

%windir%\system32\tscon.exe %SESSIONNAME% /dest:console 
Run Code Online (Sandbox Code Playgroud)


Ian*_*son 6

我在Windows中使用该服务运行Jenkins时遇到了很多问题.相反,我现在禁用该服务并从CMD运行它.

那么开放CMD.

cd C:\Program Files (x86)\Jenkins

java -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar
jenkins.war --httpPort=9091
Run Code Online (Sandbox Code Playgroud)