Fan*_*nch 13 macos headless awtrobot jenkins xvfb
我们有一个Mac os服务器(10.10.3),我们用它来运行Jenkins的功能测试.
我们想(在我们的测试中)使用一个工具/库(sikulix作为信息),它使用了引擎java.awt.Robot类-java.awt.GraphicsEnvironment-.问题是:我们不能在无头环境中使用这个java类,因为它需要访问GUI.
所以我想知道是否有解决方案/黑客使这个工具与jenkins一起工作.
考虑到我们有一个USB-HDMI模拟器(mac无头加速器)模拟附加的显示器.
我们还安装了Xquartz,X11,xauth,所以我认为它会绕过这个java无头限制,强制将java.awt.headless属性设置为false,并使用X窗口,但事实并非如此.
如果我错了,请纠正我:我们不需要有真正的屏幕来做到这一点,这是显示模拟器/模拟器的目标; 不是吗?
我在我们的测试中成功尝试使用此lib:
在桌面上使用它(带监视器,它可以工作)
使用远程mac服务器 机器A和本地mac桌面 机器B之间的屏幕共享(通过执行此屏幕共享终端中的脚本)vnc?
在我的linux计算机(客户端)上使用ssh -Y,它也是X Window System(X11)应用程序的服务器:它在没有任何ssh配置更改(-Y标志)的情况下进行了X11转发.java.awt.headless = false在这里很有用
但我无法确定最后的解决方案是否有用.虽然我已经通过ssh执行了脚本,但我连接了一个屏幕:它可能会影响某些东西.
(请记住,最终目标是使用jenkins执行测试).
它引导我尝试:通过带有-Y标志的 ssh执行脚本,或者通过修改ssh_config/sshd_config文件(访问mac -remote服务器 - )并激活屏幕共享,但它不会自动识别X-window :(
在这里我的问题:
xvfb插件(jenkins)是否足以满足我们的需求?我不知道如何配置它.
是不是可以从mac服务器执行X11转发(用jenkins执行的脚本作为守护进程/代理;包括可能是ssh -Y连接,我还不知道如何让它工作)到共享的屏幕? - 这是服务器....不知道为什么它不能识别它 - .
是的,我知道,这个问题很奇怪,但我的大脑正在燃烧,我感到困惑......
顺便说一句,我宁愿做一切真无头,但如果不可能,我必须使用屏幕共享,我很好.
目前我真的很想知道是否有可能在无头环境中启动需要X11 -on mac的GUI应用程序...我认为正确的安装答案是肯定的,但显然它不是那么简单......或者我一定不能正确理解.
对于X11转发,我有$ DISPLAY var设置,但我仍然得到
错误:无法打开显示'地址'
即使我将显示设置为本地,远程或地址,我仍然被具有GUI访问权限的lib阻止.
另一个解决方案可能是附加终端会话(屏幕共享终端/终端启动脚本),我将在明天尝试使用tmux.我仍然觉得奇怪,服务器无法检测到它的共享会话(我想再说一遍!)....有一个打开的屏幕花花公子:s
使用xvfb:
export DISPLAY=:1
Xvfb :1 &
Run Code Online (Sandbox Code Playgroud)
然后mvn命令,但它仍然无法正常工作.
好吧,一种解决方案是在屏幕共享终端中启动 jenkins (war)(或者只是打开 jenkins 会话)。这样,当您启动作业时,它会使用屏幕共享显示。
[事实上这不是真的,问题只是关于访问 GUI、是否连接屏幕。因此,如果您在服务器上安装了适当的应用程序(X11、Xfvb、XQuartz for mac 等),它将可以工作。编辑:仍然不确定]
我的问题是:首先我有 java headless 限制,其次我还有 -java GUI-/-mac ssh- 限制,这在 Linux 上不存在。
请参阅atomicpirate的答案:How to run a java GUI on mac osx after ssh
总而言之,默认情况下它在 mac 上通过 ssh 使用 java headless 库,强制它使用 GUI 库:
java.awt.headless = false
加号(适用于苹果机)
导出 AWT_TOOLKIT=CToolkit
如果您通过 Jenkins 启动测试,您也可以看看这个 - 如果您无法访问 WindowServer- : 使用 Jenkins 构建 Unity 项目失败
编辑:虽然它对我不起作用,即使通过代理,但无论如何都需要使用 jenkins 用户(VNC)打开会话。
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |