18

我们有 Jenkins 的主从配置。我们的 .NET 项目是由在 Windows 上运行的从属 Jenkins 实例构建的。

有一堆 GUI 测试,但是它们似乎只有在远程桌面连接 (RDC) 会话打开时才会运行。

当尝试在没有 RDC 的情况下运行测试时,Jenkins 没有显示任何测试进度。然而,然后,我连接到 Slave 的桌面,可以看到启动的应用程序的主窗口,但是 UI 测试框架(白色)无法执行任何操作。

Jenkins 从站通过 Java Web Start 启动。

我在几个网站上读到,不幸的是,没有 RDC 会话就无法运行 GUI 测试。

我只是想确认这是真的,并想知道是否有任何解决方法。

4

4 回答 4

15

您的从机必须在桌面上才能正常运行测试。我们遇到了同样的问题。

解决方案是让测试机器启动并自动登录到桌面。为了确保测试仅在桌面可用后开始,我们添加了一个计划任务,设置为在用户登录时运行,这将通过 Java Web Start 启动 Jenkins 从站。这样,Jenkins 只会在桌面运行时看到从属服务器。之后,一切正常。

于 2012-04-16T19:54:47.427 回答
10

我有一个运行不同类型的 GUI 测试、win32、swing、selenium 的 Jenkins 集群。他们以无人值守的方式 24x7 运行数千个测试。这是我的解决方案:

  1. 如何保持 GUI 测试有效 - RDC 不起作用,GUI 应用程序只有在 RDC 会话处于活动状态时才能正常运行。我已经尝试了不同的方法,所以不要费心再试一次。在 RDC 窗口最小化或断开连接后,您的测试将中断。到目前为止的解决方案是将 VNC 服务器(我使用的是 UltraVNC)安装为服务,并确保它在登录期间启动。还要确保您没有使用 RDC 连接到您的测试机器,因为 RDC 会中断 VNC 会话。如果可能,也将其与 VNC 客户端连接。但这取决于你。我所做的是当我需要在机器上调试某些东西时,我会对其进行 RDC 并重新启动它以确保设置了 #2 和 #3。

  2. 自动登录 - SysInternalsSuite 中有一个工具 autologon.exe,在您的从站上运行它

  3. 自动注册奴隶 - 你需要的是 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>
于 2013-11-30T02:27:12.777 回答
7

在没有 Windows 自动登录的情况下,还有另一种方法(在少数机器上对我有用)。

1. 转到计算机管理 -> 服务和应用程序 -> 服务 -> Jenkins Slave -> 属性
2. 在登录选项卡中选择本地系统帐户并选中允许服务与桌面交互3. 单击 确定
关闭此窗口,然后重新启动Jenkins 从服务 4. 转到您的测试应用程序所在的目录,然后在您的应用程序可执行文件上选择Properties 5. Security选项卡上单击Edit... 6. 在新窗口中单击Add.. 7. 在新窗口中单击



位置...并选择本地计算机(列表中最顶部的选项),单击确定
8. 将本地服务放在窗口的白色区域并单击检查名称,单击确定
9. 允许该用户完全控制,单击确定,关闭所有windows

这应该就是一切。请让我知道这对你有没有用。

于 2014-10-27T14:35:28.030 回答
2

正如其他答案已经说明的那样,需要一个配置,其中 Windows 机器自动登录到真实用户,有关详细信息,请参阅其他答案。然而这对我来说还不够,我需要设置一个 UltraVNC 服务器作为服务运行来解决问题。

在该网站上提到,通过 RDP 登录是该技巧的一个问题,即与 VNC 连接或在 RDP 访问后重新启动。

于 2014-07-18T08:44:16.763 回答