Jenkins

This page describes the "Jenkins" builder used by Team XBMC to build the variety of releases from Team XBMC

Jenkins
Jenkins is the successor of Buildbot which was harder to maintain and Jenkins also offers a wide variety of plugin that can be used to benefit further development and testing.

When going to http://jenkins.kodi.tv you are shown the current frontpage like shown below and you start at the dashboard giving you several build statistics and overview of current used builders.

You also see tabs for each platform that contain specific builders for each one of those. The helpers contains like the name says helpers that can aid in doing quick builds like build all platforms or uploading of XBMC releases to our mirrors.

Building
Building using Jenkins is only allowed by XBMC Team members. Team members that have XBMC git rights are allowed to use these builders.

Automated builds
Automated build are started at a specific time which can be configured at for each job. At the moment we use the job XBMC-BuildAll which is triggered by a timer. It starts the list of separate jobs listed below and by default will build the master branch from https://github.com/xbmc/xbmc
 * XBMC-Android-ARM
 * XBMC-IOS-ATV
 * XBMC-OSX-32
 * XBMC-OSX-64
 * XBMC-WIN-32

Timed builds are considered nightly builds and are uploaded to http://mirrors.xbmc.org/nightlies/ The build time is set using cron and using the XBMC-BuildAll configure page.

Starting manual build
To start a manual build to build a certain release or just for testing/compiling purpose you have two choices.

Specific platform
Once you started building you can follow it's progress with the progress bars or click on the console to view the compiling progress.

Build all platforms
By clicking on the XBMC-BuildMulti-All job in the helper tab you get several options on the left side just like on a single platform build. Click on Start a new build. This process is the same as the single builds for each platforms with the only change this will trigger each individual builder that is currently linked to this build job.

Testing Pull Requests
Before merging a pull request a Jenkins build must be triggered to ensure all platforms continue to compile, after the pull request has been successfully built by Jenkins then the pull request will show that it is "safe to merge".

The following trigger phrases can be commented to pull requests by team members:


 * jenkins build this please - jenkins builds the PR and sets the PR status after that
 * jenkins build and merge - jenkins builds the PR and if successfull merges it to master
 * jenkins build addons please - jenkins builds the binary addons from a PR and sets the PR status after that
 * jenkins build kore - jenkins builds the official kodi remote "Kore" and sets the PR status after that
 * jenkins build kore and merge - jenkins builds the official kodi remote "Kore" and if successfull merges it to master

Note - This will only work for Team Kodi members who have github commit rights, or alternative Team Kodi members who don't have commit rights but have been added to the special "jenkins-access" team on github (the list of these members is at Jenkins-Access)

Configure Jenkins & Github Integration
Described below are the Steps required to make sure you are authorised to trigger Jenkins build on Github.