java - 如何在 OSX Lion 上使用 xvnc 配置 jenkins for maven 项目

标签 java maven osx-lion jenkins vnc-server

当 Jenkins 作业运行时,我得到以下输出:

...

启动 xvnc

[workspace] $ /Applications/VNCServer.app/OSXvnc-server -rfbauth /Applications/VNCServer.app/pass.word :11 -geometry 800x600

2012-02-08 22:04:05.375 OSXvnc-server[3412:707] Arguments: -rfbauth /Applications/VNCServer.app/pass.word :11 -geometry 800x600 

2012-02-08 22:04:05.394 OSXvnc-server[3412:707] Main Bundle: /Applications/VNCServer.app
[workspace] $ /bin/sh -xe /var/folders/5d/jp_23pvd3bq5331x7myfcrym0000gq/T/hudson487661983531354780.sh

2012-02-08 22:04:05.425 OSXvnc-server[3412:707] Loading Bundle /Applications/VNCServer.app/Contents/Resources/TigerBundle.bundle

Parsing POMs
2012-02-08 22:04:05.441 OSXvnc-server[3412:707] Loading Bundle /Applications/VNCServer.app/Contents/Resources/JaguarBundle.bundle

2012-02-08 22:04:05.447 OSXvnc-server[3412:707] Running in Little Endian

2012-02-08 22:04:05.448 OSXvnc-server[3412:707] Pasteboard Inaccessible - Pasteboard sharing disabled

2012-02-08 22:04:05.449 OSXvnc-server[3412:707] Waiting for clients

2012-02-08 22:04:05.449 OSXvnc-server[3412:2c03] Using Private Event Source

2012-02-08 22:04:05.450 OSXvnc-server[3412:2c03] No Event Source -- Using 10.3 API

2012-02-08 22:04:05.451 OSXvnc-server[3412:2c03] Using Dynamic Event Tap -- HID for console user

2012-02-08 22:04:05.452 OSXvnc-server[3412:2c03] Registering Bonjour Service(_rfb._tcp.) - jjmacbook.local

2012-02-08 22:04:05.452 OSXvnc-server[3412:3503] IPv6: Started Listener Thread on port 5901

2012-02-08 22:04:05.453 OSXvnc-server[3412:2c03] Started Listener Thread on port 5901

[workspace] $ /Library/Java/Home//bin/java -cp /Users/jenkins/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.2.jar:/Users/jenkins/.jenkins/tools/Maven/boot/plexus-classworlds-2.4.jar org.jvnet.hudson.maven3.agent.Maven3Main 

/Users/jenkins/.jenkins/tools/Maven /Users/jenkins/.jenkins/war/WEB-INF/lib/remoting-2.9.jar /Users/jenkins/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.2.jar 50302

<===[JENKINS REMOTING CAPACITY]===>channel started

Executing Maven:  -B -f /Users/jenkins/.jenkins/jobs/chess-svg/workspace/pom.xml clean install

但是,自动化 UI 测试仍然会在我的屏幕上弹出窗口。

使用的vncserver是http://sourceforge.net/projects/osxvnc/

最佳答案

我遇到了同样的问题,我认为这实际上是不可能的。

问题在于,在 OSX 上运行的 Firefox/Chrome 版本适用于 OSX,而​​不是“普通”X11 - 所以即使您运行 X11 服务器并使用 xvfb/xvnc/任何内容并传入 DISPLAY=:123 ,Firefox/Chrome 不在乎,因为它们不是基于 X 的,而是基于 Carbon/Cocoa 的。

您可以按如下方式自行确认:

  1. 运行 X11 服务器(来自聚光灯)
  2. 在新的 xterm 中,输入“xhost +”(只是为了确认)
  3. xvfb -br -屏幕 0 1280x1024x24 :123123 &
  4. 现在您在显示器 123123 上显示了一个新的帧缓冲区 - 在那里运行 xterm:
  5. DISPLAY=:123123 xterm &
  6. 主屏幕上没有出现任何内容,因为新的 xterm 位于后台。检查它是否存在:
  7. xlsclients-显示:123123
  8. 您将看到一个条目,即您在其中生成的 xterm。
  9. 现在用浏览器尝试一下:
  10. DISPLAY=:123123/Applications/Firefox.app/Contents/MacOS/firefox
  11. ...并且 Firefox 仍然显示在您的主屏幕上。

    你可以用其他东西来检查这一点——如果你执行“DISPLAY=:123123 xcalc”,xcalc不会出现在主屏幕上,但它会显示在xlsclients的东西列表中,因为它是X-基于。

    但是如果您尝试“DISPLAY=:123123/Applications/Calculator/Contents/MacOS/Calculator”,OSX 计算器会显示在主屏幕上,因为它不是基于 X 的。

    (另一个可能的解决方案是使用 selenium 服务器,但是我们的 Web 应用程序破坏了 selenium 服务器,因此这对我们来说不是一个选择 - 最后,我转而使用基于 Windows 的 Jenkins 安装,其中 selenium 和 chromedriver 工作正常当从 Jenkins 运行时)。

关于java - 如何在 OSX Lion 上使用 xvnc 配置 jenkins for maven 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9201575/

相关文章:

cocoa - Lion 上滚动刷新

java - 为什么只为减法二元运算符生成此错误?

java - Nimbus 上的 JTextArea 在不同机器上不一致

java - maven-jaxws-tools-plugin 错误 : ClassNotFoundException

caching - Jenkins 禁用或清除 Maven 构建的缓存

java - Tomcat 6/7,Java 8 : Can't compile JSP: [various types] cannot be resolved

django - Django 1.3.1编译消息。错误:sh:msgfmt:找不到命令

SVN、OSX10.7 : SSL handshake failed: SSL error code -1/1/336032856

java - JButton 内的上划线文本

java - 什么是 JAXB,我为什么要使用它?