在持续集成中(无头环境 -> mac os X 服务器),使用需要访问 GUI 的 tool/lib,xvfb/display emulator/X11 转发
In continuous integration (headless env -> mac os X server), use a tool/lib which needs access to GUI, xvfb/display emulator/X11 forwarding
我们有一个 Mac os x 服务器 (10.10.3),我们用它来 运行 使用 Jenkins 进行功能测试。
我们想使用(在我们的测试中)tool/lib(sikulix 用于信息),它在引擎盖下使用 java.awt.Robot class -java.awt.GraphicsEnvironment-。问题是:我们不能在无头环境中使用这个 java class,因为它需要访问 GUI。
所以我想知道是否有 solution/hack 可以让这个工具与 jenkins 一起工作。
考虑到我们有一个 USB-HDMI 模拟器(mac 无头加速器)可以模拟连接的显示器。
我们还安装了 Xquartz、X11、xauth,所以我认为它可以通过强制 java.awt.headless 属性 为 false 并使用一个Xwindow,但事实并非如此。
如果我错了请纠正我:我们不需要真正的屏幕来做到这一点,这是显示器的目标 emulator/simulator;不是吗?
我在测试中成功使用此库的尝试:
在桌面上使用它(带显示器,可以正常工作)
在远程mac服务器machine A和[之间使用屏幕共享=69=]local mac desktop machine B (在这个屏幕共享的终端执行脚本) vnc?
在我的 linux 计算机(客户端)上使用 ssh -Y,它也是 X Window 系统(X11)应用程序的服务器:它在 X11 上运行良好在没有任何 ssh 配置更改的情况下转发(-Y 标志)。 java.awt.headless=false 在这里很有用
但我无法确定最后一个解决方案是否有用。虽然我已经通过 ssh 执行了脚本,但我连接了一个屏幕:它可能会影响某些东西。
(请记住,最终目标是使用 jenkins 执行测试)。
这让我尝试了这个:通过 ssh 和 -Y 标志或通过修改 ssh_config/sshd_config 文件 执行脚本(访问 mac -远程服务器-) 屏幕共享处于活动状态,但它不会自动识别 X-window :(
这是我的问题:
xvfb 插件 (jenkins) 是否足以满足我们的需求?还不知道怎么配置
是否可以os从 mac 服务器进行 X11 转发(使用 jenkins 作为 daemon/agent 执行的脚本;可能包括 ssh -Y 连接,我还不知道如何让它工作)到共享屏幕?-这也是服务器....不知道为什么它不能识别它- .
是的,我知道,这个问题很奇怪,但我的大脑在燃烧,我感到困惑...
顺便说一句,我宁愿做任何事情都没有头,但如果不是 possible 并且我必须使用屏幕共享,我很好。
目前我真的很想知道是否可以在无头环境中启动需要 X11 -on mac- 的 GUI 应用程序 os- 我认为答案是肯定的安装正确,但显然没那么简单...或者我一定是没理解正确。
对于 X11 转发,我设置了 $DISPLAY 变量,但我仍然得到
Error: Can't open display 'address'
即使我将显示设置为本地、远程或地址,我仍然被具有 GUI 访问权限的库阻止。
另一种解决方案可能是附加终端会话(屏幕共享 terminal/terminal 启动脚本),我明天会尝试使用 tmux。我仍然觉得服务器无法检测到它的共享会话很奇怪(我想下次再说!)...有一个打开的屏幕老兄:s
使用 xvfb :
export DISPLAY=:1
Xvfb :1 &
然后mvn命令还是不行
好吧,一种解决方案是在屏幕共享终端中启动 jenkins (war)(或者只打开 jenkins 会话)。这样,当您启动作业时,它会使用屏幕共享显示。
[其实不是这样,问题只是关于访问GUI,是否附加屏幕。因此,如果您在服务器上安装了适当的应用程序(X11、Xfvb、XQuartz mac 等),它就会工作。 编辑 : 仍然不确定]
我的问题是:首先我有 java headless 限制,其次我还有 -java GUI-/-mac ssh- 限制,Linux.
查看 atomicpirate 的回答:How to run a java GUI on mac osx after ssh
总而言之,默认情况下,它通过 mac 上的 ssh 使用 java 无头库,强制它使用 GUI 库:
java.awt.headless = false
加上(mac)
export AWT_TOOLKIT=CToolkit
如果您通过 Jenkins 启动您的测试,您也可以看看这个 - 如果您无法访问 WindowServer - :
Build Unity project with Jenkins failed
编辑 : 虽然它对我不起作用,即使通过代理,无论如何也有必要用 jenkins 用户 (VNC) 打开会话。
我们有一个 Mac os x 服务器 (10.10.3),我们用它来 运行 使用 Jenkins 进行功能测试。
我们想使用(在我们的测试中)tool/lib(sikulix 用于信息),它在引擎盖下使用 java.awt.Robot class -java.awt.GraphicsEnvironment-。问题是:我们不能在无头环境中使用这个 java class,因为它需要访问 GUI。
所以我想知道是否有 solution/hack 可以让这个工具与 jenkins 一起工作。
考虑到我们有一个 USB-HDMI 模拟器(mac 无头加速器)可以模拟连接的显示器。
我们还安装了 Xquartz、X11、xauth,所以我认为它可以通过强制 java.awt.headless 属性 为 false 并使用一个Xwindow,但事实并非如此。
如果我错了请纠正我:我们不需要真正的屏幕来做到这一点,这是显示器的目标 emulator/simulator;不是吗?
我在测试中成功使用此库的尝试:
在桌面上使用它(带显示器,可以正常工作)
在远程mac服务器machine A和[之间使用屏幕共享=69=]local mac desktop machine B (在这个屏幕共享的终端执行脚本) vnc?
在我的 linux 计算机(客户端)上使用 ssh -Y,它也是 X Window 系统(X11)应用程序的服务器:它在 X11 上运行良好在没有任何 ssh 配置更改的情况下转发(-Y 标志)。 java.awt.headless=false 在这里很有用
但我无法确定最后一个解决方案是否有用。虽然我已经通过 ssh 执行了脚本,但我连接了一个屏幕:它可能会影响某些东西。
(请记住,最终目标是使用 jenkins 执行测试)。
这让我尝试了这个:通过 ssh 和 -Y 标志或通过修改 ssh_config/sshd_config 文件 执行脚本(访问 mac -远程服务器-) 屏幕共享处于活动状态,但它不会自动识别 X-window :(
这是我的问题:
xvfb 插件 (jenkins) 是否足以满足我们的需求?还不知道怎么配置
是否可以os从 mac 服务器进行 X11 转发(使用 jenkins 作为 daemon/agent 执行的脚本;可能包括 ssh -Y 连接,我还不知道如何让它工作)到共享屏幕?-这也是服务器....不知道为什么它不能识别它- .
是的,我知道,这个问题很奇怪,但我的大脑在燃烧,我感到困惑...
顺便说一句,我宁愿做任何事情都没有头,但如果不是 possible 并且我必须使用屏幕共享,我很好。
目前我真的很想知道是否可以在无头环境中启动需要 X11 -on mac- 的 GUI 应用程序 os- 我认为答案是肯定的安装正确,但显然没那么简单...或者我一定是没理解正确。
对于 X11 转发,我设置了 $DISPLAY 变量,但我仍然得到
Error: Can't open display 'address'
即使我将显示设置为本地、远程或地址,我仍然被具有 GUI 访问权限的库阻止。
另一种解决方案可能是附加终端会话(屏幕共享 terminal/terminal 启动脚本),我明天会尝试使用 tmux。我仍然觉得服务器无法检测到它的共享会话很奇怪(我想下次再说!)...有一个打开的屏幕老兄:s
使用 xvfb :
export DISPLAY=:1
Xvfb :1 &
然后mvn命令还是不行
好吧,一种解决方案是在屏幕共享终端中启动 jenkins (war)(或者只打开 jenkins 会话)。这样,当您启动作业时,它会使用屏幕共享显示。
[其实不是这样,问题只是关于访问GUI,是否附加屏幕。因此,如果您在服务器上安装了适当的应用程序(X11、Xfvb、XQuartz mac 等),它就会工作。 编辑 : 仍然不确定]
我的问题是:首先我有 java headless 限制,其次我还有 -java GUI-/-mac ssh- 限制,Linux.
查看 atomicpirate 的回答:How to run a java GUI on mac osx after ssh
总而言之,默认情况下,它通过 mac 上的 ssh 使用 java 无头库,强制它使用 GUI 库:
java.awt.headless = false
加上(mac)
export AWT_TOOLKIT=CToolkit
如果您通过 Jenkins 启动您的测试,您也可以看看这个 - 如果您无法访问 WindowServer - : Build Unity project with Jenkins failed
编辑 : 虽然它对我不起作用,即使通过代理,无论如何也有必要用 jenkins 用户 (VNC) 打开会话。