Jenkins is a Continuous Integration server. It's used to build and test applications that are being developed.
We chose Jenkins (despite it being Java based) over other options (Integrity, CI Joe, Travis) because it has a great community and plenty of plugins. It's very mature, but frequently updated and well maintained. We previously used Integrity, but it was difficult to extend and integrate with other systems.
Note that Jenkins was originally called Hudson, and some plugins still reference the Hudson name.
sudo apt-get install -y openjdk-6-jre-headless # NOTE: Note happy about this dependency, since it installs libasound2 libxi6 libxrender1 libxtst6, and will actually run without it # The dependency is actually for java2-runtime, but should be for java2-runtime-headless. sudo apt-get install -y openjdk-6-jre sudo apt-get install daemon
We install Jenkins from the Debian repository that they provide. Note that their updates are quite frequent (about 2 a month).
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo "deb http://pkg.jenkins-ci.org/debian binary/" > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
We configure Jenkins to run on port 8099 on the loopback interface. In our Apache configuration, we have set up a virtual host to proxy to port 8099.
JENKINS_PORT=8099 sudo sed -i /etc/default/jenkins -e "s/^HTTP_PORT=.*$/HTTP_PORT=$JENKINS_PORT/" sudo sed -i /etc/default/jenkins -e 's|^JENKINS_ARGS=.*$|JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpListenAddress=127.0.0.1 --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT"|' sudo /etc/init.d/jenkins restart
Browse to http://ci.boochtek.com/configure: