Pro Tips: Run Multiple Jenkins CI Servers on a Single Machine
Jenkins (or Hudson if you work for Oracle) is a great, simple and steady continuous integration and build server. One of its greatest features is that despite being packaged as a standard .war ready to be dropped into your JEE web container of choice … it also contains an embedded web container that makes the .war everything you need in most situations. Simply run
java -jar jenkins.war
and up starts Jenkins on port 8080 in all of its glory. All of Jenkins’ configuration files, plugins, and working directories go under <USER_HOME>/.jenkins by default. Perfect.
Except if you want to run multiple instances on the same machine. We are going to get a config folder collision. It turns out this is a piece of cake, but the docs are hard to find. Jenkins will use a JENKINS_HOME path environement variable for its configuration files if one is set so a simple change means we can run Jenkins out of any directory we desire:
java -DJENKINS_HOME=/path/to/configs -jar jenkins.war
What about the port you say? Winston, the embedded web container used, has a simple property for this too:
java -DJENKINS_HOME=/path/to/configs -jar jenkins.war --httpPort=9090