I’m gathering information to set up a Jenkins CI server on a headless machine for Android unit testing.
But as Android unit tests require an emulator to run, a graphical environment seems required, or is it possible to run an emulator in non-graphical mode?
The wiki entry on the Jenkins Android Emulator plugin is also not very enlightening on this matter, it states:
If you have build slaves running headless (e.g. Linux servers that don’t run an X server), it is recommended to take advantage of Jenkins’ Xvnc Plugin.
With this plugin enabled, you can run multiple Android emulators in parallel on a headless slave, while keeping the “Show emulator window” option enabled.
Does this imply that emulators can be run on a headless machine with the “Show emulator window” option disabled??
If a graphical environment is required the easiest solution most sources speak of is by using the Xvnc plugin which uses an Xvnc server to provide an X instance.
But if I understand correctly this Xvnc server must run on another machine with X available, or does it run on the headless machine providing an X instance from there?
As the author of that plugin, I can tell you yes: you can run emulators on a headless machine, without a graphical environment — just uncheck the “Show emulator window” option.
This is the equivalent of running the Android emulator with the “
-no-window” option on the command line.
I will update the wiki to make this clearer; thanks for bringing it up.
I have a similar setup in my project. But I chose Robolectric for my unit tests.
It is quite easy to run the Robolectric tests on Jenkins.
You may have to go for emulator for your system tests on a headless Jenkins server.
I still do not have a solution to run the system tests on a headless server.