Jenkins CI integration

Bob can use a Jenkins server to continuously build a project. Bob creates, updates and deletes the jobs as needed and as the recipes evolve during time. Just tell Bob where your server is located and let him configure it. By giving each project a unique prefix multiple projects can be built on the same server.

Configuring a server

Getting a Jenkins to build your project is just two commands in Bob. Suppose you have a suitable Jenkins server located at http://jenkins.intranet.local:8080 and want to build the sandbox tutorial. Go to the project root directory and tell Bob about your server and what you want to build there (substitute $USER and $PASSWD with your actual credentials):

$ bob jenkins add intranet http://$USER:$PASSWD@jenkins.intranet.local:8080 \ -p sandbox- -r vexpress

This adds a synonym (“intranet”) for your Jenkins server. The -p adds the sandbox- prefix to every job. At least one -r option must be given to specify what should be built. To create the jobs and start the build do a:

$ bob jenkins push intranet

Now go to your Jenkins and see it build...

Notable features of Jenkins integration

Per-Recipe jobs

Bob will create a separate job for each recipe. This keeps the project structure visible and allows proper pipelining. Building on remote slaves is fully supported.

Continous builds

Recipes can reference SCM branches instead of tags or fixed tarballs. Bob will use the respective Jenkins plugins to fetch the sources. This enables SCM hooks to work properly and the Jenkins can build immediately whenever code is pushed.

Minimal requirements

Bob requires only a couple of Jenkins plugins and makes not much assumptions about the build environment on the server. If your project uses a sandbox (which is highly recommended) you do not need to care much what is installed on the Jenins nodes.


Bob has a plugin API which can be used to augement the Jenkins jobs as needed. Typical examples would be to enable the Cobertura plugin for unit tests or to include the warnings plugin for nice statistics.

Automatic configuration

Bob will update and trigger the Jenkins jobs as the recipes evolve. By executing Bob itself in a Jenkins job you can let the server configure itself. Given that SCM hooks are configured correct any commit to the recipes or the soure code will trigger the affected jobs.