You are viewing a plain text version of this content. The canonical link for it is here.
Posted to infrastructure-issues@apache.org by "Robert Munteanu (JIRA)" <ji...@apache.org> on 2014/09/30 10:00:54 UTC

[jira] [Created] (INFRA-8406) Install Xvfb plugin on Jenkins

Robert Munteanu created INFRA-8406:
--------------------------------------

             Summary: Install Xvfb plugin on Jenkins
                 Key: INFRA-8406
                 URL: https://issues.apache.org/jira/browse/INFRA-8406
             Project: Infrastructure
          Issue Type: Wish
          Components: Jenkins
            Reporter: Robert Munteanu


For the Sling IDE Tooling we're running Eclipse-based tests, which require a graphical environment to run. The build fails with an error like

!ENTRY org.eclipse.osgi 4 0 2014-09-30 07:49:39.001
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
	at org.eclipse.swt.SWT.error(SWT.java:4423)
	at org.eclipse.swt.widgets.Display.createDisplay(Display.java:925)
	at org.eclipse.swt.widgets.Display.create(Display.java:909)
	at org.eclipse.swt.graphics.Device.<init>(Device.java:156)
	at org.eclipse.swt.widgets.Display.<init>(Display.java:507)
	at org.eclipse.swt.widgets.Display.<init>(Display.java:498)
	at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:695)
	at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:162)
	at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay(IDEApplication.java:154)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:96)
	at org.eclipse.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:31)
	at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:115)
	at org.eclipse.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:37)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

Typically, this is done using Xvnc or Xvfb. I noticed that Xvfb is already installed on the slaves, so I tried to configure our Maven job to take advantage of it. However, I can't seem to propagate the DISPLAY variable to the Maven build. My configuration changes were

1. Add a shell pre-build step: Xvfb :8 -ac -screen 0 1024x768x8 &
2. Add a shell pre-build step: export DISPLAY=:8.0
3. Add a shell post-build: pkill Xvfb

However, the shell variable from step 2 does not seem to be picked up by the Maven process.

What I've used in the future was the Xvfb plugin [1], which worked nicely. And this would also help prevent conflicts with other jobs on the same slave which use Xvfb.

[1]: https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)