In order to make your machine(s) participate as Jenkins BuildSlaves, you'll need to define a simple configuration file and create an init script to start the buildslave process. After the local BuildSlave is running, it will take care of downloading whatever else it needs to do its job. Note that Jenkins can not install packages to meet dependencies – those need to be taken care of manually.
Before your BuildSlave can participate, an entry for it must be created on the server. Please contact mjmac, rread, or brian to let us know what your values for $JENKINS_NODENAME and $JENKINS_WORKDIR will be so that we can set things up on our side.
Your /etc/sysconfig/jenkins-slave file should look something like this:
JENKINS_WORKDIR="/var/lib/jenkins" JENKINS_USER="jenkins" JENKINS_URL="http://build.whamcloud.com/" JENKINS_NODENAME="YOUR OWN NODENAME (e.g. ralph-buildnode)"
Save the following to e.g. /etc/init.d/jenkins-slave and chmod +x it:
#!/bin/sh # # jenkins-slave: Launch a Jenkins BuildSlave instance on this node # # chkconfig: - 99 01 # description: Enable this node to fulfill build jobs # # Source function library. . /etc/rc.d/init.d/functions [ -f /etc/sysconfig/jenkins-slave ] && . /etc/sysconfig/jenkins-slave [ -n "$JENKINS_URL" ] || exit 0 [ -n "$JENKINS_WORKDIR" ] || exit 0 [ -n "$JENKINS_USER" ] || exit 0 [ -n "$JENKINS_NODENAME" ] || exit 0 [ -x /usr/bin/java ] || exit 0 download_jar() { curl -s -o slave.jar $JENKINS_URL/jnlpJars/slave.jar || exit 0 } start() { cd $JENKINS_WORKDIR [ -f slave.jar ] || download_jar echo -n $"Starting Jenkins BuildSlave: " su - $JENKINS_USER sh -c "\ java -jar slave.jar \ -jnlpUrl $JENKINS_URL/computer/$JENKINS_NODENAME/slave-agent.jnlp \ >slave.log 2>&1 &" echo Done. } stop() { echo -n $"Shutting down Jenkins BuildSlave: " killproc slave.jar echo Done. } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop start ;; status) status java ;; *) echo $"Usage: $0 {start|stop|restart|reload}" exit 1 esac exit 0
Setup for the simple folk (like me)
In the interest of those who like to cut-and-paste, I've started with a generic Centos 5.4 installation.
Here's a list of all the things I had to do to complete the Jenkins setup.
# THIS IS NOT A SCRIPT # Generic Centos 5.4 install - no GUI # disable selinux (might not be necessary, old habit) # diable firewall (likewise) # add repo for git rpms rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm # Install extra bits yum -y install binutils binutils-devel gcc autoconf automake libtool git java redhat-rpm-config unifdef quilt # Add user adduser -d /var/lib/jenkins jenkins passwd jenkins # Setup ~jenkins/.gitconfig with your username@email mkdir /var/lib/jenkins chown jenkins.jenkins /var/lib/jenkins # using the example provided above vi /etc/sysconfig/jenkins-slave # create the default kernel directories mkdir -p /build/bld/kerneltree mkdir -p /build/bld/reusebuild mkdir /build/bld/kerneltree/2.6.18 # copy kernel src.rpm to kerneltree/<version> directory # Tarball may not be necessary, might test cp kernel-2.6.18-194.17.1.el5.src.rpm linux-2.6.18-194.17.1.el5.tar.bz2 \ /build/bld/kerneltree/2.6.18 # For client builds, you must have the proper kernel-devel rpm, which goes under kernelrpm: cp kernel-devel-2.6.18-194.17.1.el5.x86_64.rpm \ /build/bld/kernelrpm/2.6.18/rhel5/x86_64/kernel-devel-2.6.18-194.17.1.el5.x86_64.rpm # For current Lustre, you must have createrepo yum -y install createrepo # initscript cp jenkins-script.sh /etc/init.d/jenkins-slave chmod +x /etc/init.d/jenkins-slave /etc/init.d/jenkins-slave start # end
Now you need to have the system registered with the jenkins server by an admin.
You can create a triggered build to test your setup.