Question

I need to setup a build development environment that includes the following

  • Sonatype Nexus
  • Jenkins
  • Collabnet Subversion

My application runs on a GlassFish application server. I noticed that all the above three tools come with embedded application servers. I have downloaded each and have tried them out but i am a bit wary of the fact that i now have 4 application servers running.

I noticed that each of them also provide war file variant which can just be dropped on to an existing app server. I think with "Collabnet Subversion Edge" i probably dont have any other option as it doesnt come with a war installation option. The other two can be downloaded as war files.

What are the disadvantages of running both Nexus and Jenkins on the same application server. Are there any drawbacks? One i am investigating at the moment is how to configure it. It seems that it can only be configured once the war files has been exploded/unarchived by the application server.

I am also reluctant to drop these war files into the existing Glassfish instance as it is used for formal tests. I think maybe i should install Tomcat and use it for these tools. Would you recommend that i stick with the embedded servers or just use one application server and allocate more memory when necessary? Do any of these tools work better with their embedded servers or does it not make any difference?

Thanks

Was it helpful?

Solution

Hudson/Jenkins as well as Nexus can run as war files in Tomcat or Glassfish. However for both of them the preferred and best supported option is to use the bundled app server.

Nexus uses Jetty internally. Hudson 3 (beta from Eclipse) does too. Old Hudson and Jenkins both use winstone internally. Both of these are VERY lightweight containers and the overhead of running them side by side should be negligible.

You will get a lot more impact from what these servers actually do (running builds, serving artifacts and so on).

So to make your life easier for install, upgrades as well as runtime support I would suggest to stick with the embedded default app servers.

OTHER TIPS

All 3 tools can share a single Glassfish (or similar appserver) instance. Problem is you become responsible for setting sensible memory handling parameters. If one application causes a Java OutOfMemory exception, all applications are potentially affected :-(

If you check the launcher scripts for the various apps you'll discover each sets different defaults for Java heap and permgen settings.

My recommendation is to keep each app isolated and use the embedded appservers. Jenkins and Nexus are both fairly light-weight (I don't use Collabnet).

I haven't used Jenkins, but I have seen nexus and hudson run in a single tomcat instance running as separate wars. For nexus, the only difference between the war version and the standalone version is that the standalone includes jetty so that you can run it standalone...but that's just the wrapper. The actual nexus running is the same.

I'd assume the same is true for Jenkins as well. So there's no reason to run 4 servers when you could run 4 instances in one server. Should work just fine as they'll all have different web contexts.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top