我们有Jenkins的主从配置。我们的.NET项目是由在Windows上运行的从属Jenkins实例构建的。
有许多GUI测试,但是如果打开远程桌面连接(RDC)会话,它们似乎只会运行。
当尝试在没有RDC的情况下运行测试时,Jenkins没有在测试中显示任何进展。然后,我连接到Slave的桌面,可以看到启动的应用程序的主窗口,但UI测试框架(白色)无法执行任何操作。
Jenkins slave通过Java Web Start启动。
我在几个网站上看到,遗憾的是,如果没有RDC会话,就无法运行GUI测试。
我只想确认这是真的,并想知道是否有任何解决方法。
答案 0 :(得分:13)
在测试运行正常之前,您的从属计算机必须位于桌面上。我们遇到了同样的问题。
解决方案是让测试机器启动并自动登录到桌面。为确保测试仅在桌面可用后启动,我们添加了一个计划任务,设置为在用户登录时运行,该任务将通过Java Web Start启动Jenkins从站。这样,一旦桌面运行,Jenkins只会看到奴隶。在那之后,一切都很好。
答案 1 :(得分:6)
我有一个Jenkins集群运行不同类型的GUI测试,win32,swing,selenium。他们以无人值守的方式全天候运行数千次测试。这是我的解决方案:
如何使GUI测试保持活动状态 - RDC不起作用,GUI应用程序只有在RDC会话处于活动状态时才能正常运行。我尝试过不同的方法,所以不要再费心了。在RDC窗口最小化或断开连接后,您的测试将中断。到目前为止的解决方案是安装VNC服务器(我使用UltraVNC)作为服务,并确保它在登录期间启动。还要确保没有使用RDC连接到测试机器,因为RDC将中断VNC会话。如果可能,也将它与VNC客户端连接。但这取决于你。我所做的是当我需要在机器上调试某些东西时,我对它进行RDC并重新启动它以确保设置#2和#3。
自动登录 - SysInternalsSuite中有一个工具autologon.exe,在您的奴隶上运行
自动注册从站 - 您需要的是Swarm插件 - https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin。编写一个简单的批处理并在启动文件夹中放置一个快捷方式。每次机器自动登录时,它都会自动注册为奴隶。
我实际上将#2和#3合并为一个简单的批处理文件:
autologon.exe <user> <domain> <password>
REM Here to make sure the logonCount is properly generated
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 0xFFFF /f
start /min java -jar I:\CDC\jenkins\swarm-client-1.9-jar-with-dependencies.jar -executors 1 -fsroot c:\Jenkins -labels "Prod Win7 %ComputerName%" -master <Jenkins URL> -name farm-%ComputerName% -username <username> -password <password>
答案 2 :(得分:6)
还有另一种方法可以在没有Windows自动登录的情况下执行此操作(在少数机器上适用于我)
1。转到计算机管理 - &gt;服务和应用 - &gt;服务 - &gt;詹金斯奴隶 - &gt;属性强>
2。在登录标签中选择本地系统帐户,然后选中允许服务与桌面互动
3。点击确定关闭此窗口,然后重新启动 Jenkins slave 服务
4。转到您的测试应用程序所在的目录,然后在您的应用程序可执行文件中选择属性
5。在安全标签上,点击修改...
6。在新窗口中,单击添加..
7。在新窗口中点击位置... ,然后选择本地计算机(列表中最常用的选项),点击确定
8。将 LOCAL SERVICE 置于窗口的白色区域,然后点击检查姓名,点击确定
9。允许该用户完全控制,单击确定,关闭所有窗口
这应该是一切。让我知道它是否适合你。
答案 3 :(得分:1)
正如其他答案已经说明的那样,人们需要一个配置,其中windows机器自动登录真实用户,有关详细信息,请参阅其他答案。然而,这对我来说还不够,我需要以setup a UltraVNC Server作为服务来解决问题。
在网站上提到,通过RDP登录是该技巧的问题,即连接VNC或在RDP访问后重新启动。