我在Windows 7上设置了jenkins代理,在Linux上安装了jenkins服务器 . 我正在Windows代理上运行GUI测试 . 如果我连接了远程桌面连接,它运行正常,但否则失败 . 我找到了这个链接,Jenkins on Windows and GUI Tests without RDC
但是提供的解决方案非常模糊 . 似乎唯一的解决方案是以某种方式使Jenkins服务器始终打开远程桌面连接 . 但我找不到这样做的选择 . 谁能明确教我如何解决这个问题?
非常感激!
我在Windows 7上设置了jenkins代理,在Linux上安装了jenkins服务器 . 我正在Windows代理上运行GUI测试 . 如果我连接了远程桌面连接,它运行正常,但否则失败 . 我找到了这个链接,Jenkins on Windows and GUI Tests without RDC
但是提供的解决方案非常模糊 . 似乎唯一的解决方案是以某种方式使Jenkins服务器始终打开远程桌面连接 . 但我找不到这样做的选择 . 谁能明确教我如何解决这个问题?
非常感激!
5 回答
这是您所关联的问题的获胜答案,并且非常清楚该怎么做 . 整个设置在Jenkins之外 . Jason Swager描述了他如何自动登录到桌面计算机的用户,然后在用户会话中启动Jenkins slave .
现在一步一步:
1.确保您有一个可用的GUI
配置标准Windows桌面以在Windows启动时自动登录特定用户 . 这样,没有人需要物理登录桌面 . (见How to turn on automatic logon in Windows 7)
2.启动詹金斯奴隶
您需要在此用户设置中启动Jenkins从站 . 否则,Jenkins slave将无法访问Windows UI组件(换句话说,无法与桌面交互) .
所以你必须create a scheduled task并配置它来启动你的Jenkins client using Java Web Start .
3.使用它
当从属设备在线时,您可以使用它来运行UI测试 .
要解决此问题,请按照我在此处解释的那样设置Windows自动登录:https://serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130#606130
然后为Jenkins slave创建一个启动批处理(将它放在Jenkins目录中),这将在桌面上启动它的控制台,并允许GUI作业运行:
(slave.jar可以从http:// 下载:8080 / jnlpJars / slave.jar)
EDIT : 如果您正在获取 black screenshots (例如,在使用Selenium时),请创建一个断开远程桌面的批处理文件,而不是使用常规X按钮关闭RDP会话:
以下事情对我有用:
在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>
它在由Jenkins提供支持的虚拟mstsc会话(Jenkins-to-Win)中创建具有指定宽度和高度的真实mstsc会话(Win-to-Win) .
我尝试了这里提供的解决方案,但没有任何对我有用 . 最后,我想出了一个解决方法 .
我在不同的VM(VM2)中打开了与VM的RDP连接 . 我让第一个连接在VM2内部打开并与之断开连接 .
它工作但这意味着有两个虚拟机可用 .
您仍然需要使用RDP,但在我的情况下,我们可以在同一个VM中使用RDP的 loopback .
程序,流程:
现在,您将在一个VM中为两个帐户安装两个Jenkins slave
奴隶1 - 帐户1
奴隶2 - 帐户2
启用多个RDP关注指南https://www.serverwatch.com/server-tutorials/how-to-enable-concurrent-remote-desktop-sessions-in-windows.html
在slave 2(带帐号2)中,运行rdp命令连接到slave 1(带帐号1),如下面的Start / b“" " C:\ RDP \ rdp.exe”/ v: 127.0.0.2 / domain:\ / u :admin / p:xxxx / fullscreen / w:1920 / h:1200
127.0.0.2 is very important, it's a loopback connection for RDP
将上面的命令放到Jenkins作业中,其名称如“OpenRDP_ToVMXXX”,然后您可以在启用了GUI的slave 1上运行任何测试,享受 .