通过Windows服务连接Slave时,Jenkins项目无法正常运行?

时间:2017-08-30 18:08:15

标签: jenkins windows-services

我有一个Jenkins项目,它在从机上运行自动化测试。但是,当我将从属节点的连接设置为Windows服务,并在该连接上运行项目时,构建本身将“成功”(有时),但我的测试将无法正确运行。当构建成功时,控制台输出看起来一切都很顺利;我知道它不应该是这样,因为Selenium Web浏览器在执行过程中从不在从机上运行,​​而是通过服务连接完成的。有一次我认为这可能是因为将slave-agent作为服务安装将所有相关文件默认放在slave节点所在的同一目录中,但是当我更改了服务的可执行文件的路径时移动了所有文件,它仍然会连接,项目仍然无法正常运行。

一旦我删除了服务,并从我的从属机器手动启动连接,一切都按预期进行。

有谁知道为什么会这样?或者,如果没有,你知道在启动时连接的替代方法吗?提前感谢您的建议/想法。

2 个答案:

答案 0 :(得分:0)

对于其他可能遇到此问题的人,我想发布我最终使用的解决方案(我不接受它作为这个特定问题的答案,因为它是一个解决办法;但是,@ StevenScott有在上面发布的评论中回答将此作为服务工作。)

我添加了我创建的服务并制作了一个计划任务,该任务利用批处理脚本来连接JNLP文件。在Jenkins的从属节点页面上有一个命令行选项,但这不适用于我在批处理文件中;相反,我只是将它写入cd到一个已经包含slave-agent.jnlp副本的目录,然后从那里运行它:slave agent batch script screenshot

为此,您需要禁用运行slave-agent时出现的弹出窗口(询问您是否要运行该程序)。

任务的设置应包括以下内容:

  • 常规设置:“仅在用户登录时运行”
  • 触发器:“登录时”(指定您的用户帐户)
  • 操作:“启动程序”(指定批处理脚本的位置)

答案 1 :(得分:0)

只需将我的评论移到答案中,这样您就可以接受它,因为您已表明这可以解决问题,并且应该让其他人更容易理解。

您是否正确设置了权限?从属任务使用本地帐户运行,该帐户可能无法访问您尝试使用的路径或工具。作为后台服务,您可能还需要允许该服务与桌面交互。

除非您启用该复选框以允许服务与桌面交互,否则该服务不会显示在运行测试的计算机上:

interact with the desktop