我在Windows7上设置了一个jenkins代理,在Linux上设置了一个jenkins服务器。我正在windows代理上运行GUI测试。如果我有一个远程桌面连接到它,它运行得很好,但否则就会失败。我找到了这个链接,Jenkins on Windows and GUI Tests without RDC
但是在那里提供的解决方案是相当模糊的。似乎唯一的解决方案是以某种方式使Jenkins服务器始终打开远程桌面连接。但我找不到这样的选择。有没有人可以清楚地教我如何解决这个问题?
非常感谢!
发布于 2013-10-18 22:26:24
在测试可以正常运行之前,您的从属计算机必须在桌面上。我们也有同样的问题。
解决方案是让测试机器启动并自动登录到桌面。为了确保测试只在桌面可用后开始,我们添加了一个计划任务,设置为在用户登录时运行,它将通过Java Web Start启动Jenkins从进程。这样,Jenkins只能在桌面运行时才能看到从属服务器。在那之后,一切都运行得很好。
这是您链接的问题的获胜答案,并且它非常清楚该做什么。整个设置都在Jenkins之外。Jason Swager描述了他如何自动化用户登录到windows台式机,然后在用户会话中启动Jenkins从进程。
现在一步一步来:
1.确保你有一个可用的GUI
的解决方案是让测试机器启动并自动登录到桌面
将标准Windows桌面配置为在windows启动时自动登录特定用户。这样,任何人都不需要物理登录桌面。(参见How to turn on automatic logon in Windows 7)
2.启动Jenkins slave
您需要在此用户设置中启动Jenkins从服务器。否则,Jenkins从进程将无法访问Windows UI组件(或者换句话说,无法与桌面交互)。
为了确保测试只在桌面可用后开始,我们添加了一个计划任务,设置为在用户登录时运行,它将通过Java Web Start启动Jenkins从进程。
因此,您必须对其执行create a scheduled task并进行配置才能启动Jenkins client using Java Web Start。
3.使用它
通过这种方式,Jenkins只能在桌面运行时才能看到
。在那之后,一切都运行得很好。
当从服务器在线时,您可以使用它来运行UI测试。
发布于 2014-07-02 19:11:26
要解决这个问题,请设置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(可以从http://{Your Jenkins服务器下载slave.jar:8080/jnlpJars/lalave.jar)
RDP编辑:RDP如果你得到了的黑屏截图(例如使用Selenium时),创建一个断开远程桌面连接的批处理文件,而不是使用常规的X按钮关闭RDP:
%windir%\system32\tscon.exe %SESSIONNAME% /dest:console发布于 2014-11-29 00:12:32
下面的代码帮我解决了这个问题:
在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>(e.g. mvn test -Dfiles_to_run=groupLaunch.xmlcmdkey /delete:TERMSRV/<servername>它在由Jenkins提供支持的虚拟mstsc会话(Jenkins-to-Win)中创建具有指定宽度和高度的真实mstsc会话(Win-to-Win)。
https://stackoverflow.com/questions/19441324
复制相似问题