Jenkins CI Integration¶
Jenkins CI is a popular service for continuous integration, allowing you to run test suites, perform builds, and even deploy to servers in an automated fashion.
Review Board can integrate with Jenkins CI to do test builds of code changes and report the results back as a status update on the review request.
Integration Configuration¶
To configure an integration with Jenkins CI:
Navigate to the Administration UI -> Integrations.
Click Add Integration and select Jenkins CI.
Fill out the general fields:
- Name:
A name for this particular configuration.
Each integration must have its own name. You can provide any name you choose. This will be shown whenever a build is in progress.
- Enable this integration
This will be on by default. You can turn this off to temporarily or permanently disable this Jenkins configuration without having to delete it.
- Local Site
If you’re using the advanced Local Site (multi-server partition) support, you can specify which site contains this configuration.
Most users can leave this blank.
Set the Conditions for when Review Board will trigger a build.
At a minimum, you should set a condition to match a specific repository. Even if you only have one repository configured now, you’ll want to set this up so things don’t break if you connect a second one. If needed, you can create complex rules for which review requests get matched with this config (for example, if you only want to run a test suite for certain branches).
Fill out the address and authentication credentials for the Jenkins server handling your builds:
- Server:
The base URL of your Jenkins server.
- Username:
The username for a Jenkins user who has the appropriate permissions for starting the above Job name.
- API Token / Password:
The API token used for authentication. Older versions may require the user’s password instead.
Fill out the information for the build processes in Jenkins.
- Job Name:
This allows you to specify which job to run on your Jenkins server.
This field allows for the following variables, which will be auto-populated with the appropriate fields from a review request:
{branch_name}
:The branch name.
{repository_name}
:The repository name.
{noslash_branch_name}
:The branch name with slashes converted to underscores.
{noslash_repository_name}
:The repository name with slashes converted to underscores.
Older versions of Jenkins disallowed using slashes in job names, and required normalizing them to underscores. In newer versions, slashes are required. Use the appropriate variables for your version of Jenkins.
- Review Board API Token:
This specifies the API token to use when configuring your Jenkins CI server.
If you switch the local site, this will be regenerated upon saving.
Set the information for when to run builds.
- Run builds manually:
Enable this if you want Jenkins builds to only run when manually started.
When enabled, this will add a Run button to the build entry.
- Build timeout
The amount of time until the build is considered to have timed out.
If the build takes longer than this, it will be marked as timed out and can be re-run.
You can create multiple configurations of the integration to do builds for each repository which supports Jenkins builds.
Jenkins Plugin Installation¶
On your Jenkins server, navigate to Manage Jenkins, then select Manage Plugins.
On the plugins page, select the Available tab, then type “Review Board” into the Filter box. You should see one result (but you can click the link and verify that the ID listed is
rb
if multiple results appear).Select the checkbox and click Install without restart.
Restart your Jenkins server.
Jenkins Configuration¶
To create a Review Board server configuration for your Jenkins server, perform the following steps:
On your Jenkins server, navigate to Manage Jenkins, then select Configure System.
Scroll down until you reach the Review Board configuration section.
Click Add Review Board Server to create a new Review Board server configuration.
Enter your Review Board server URL into the Review Board URL field. This must match exactly the server URL set in the Review Board General Settings page.
If you have previously created a credential for your Review Board API token, select it here and skip to the job configuration.
If you have not yet created a credential for the Review Board API token, click Add and select Jenkins.
In the prompt, set Kind to Secret text.
Set Scope to Global.
Fill in Secret with the Review Board API Token found in the Jenkins CI integration configuration page in the Review Board administration UI.
Give your secret a unique identifier in the ID field and click Add.
Click Save to save your server configuration.
For each job you wish to use on Jenkins, you must add four new build parameters that will be used to give Jenkins information on the incoming review request. To add these, perform the following steps:
Navigate to your job’s page and click Configure.
Ensure the This project is parameterized checkbox is checked.
For each of the following parameter names, repeat these two steps:
REVIEWBOARD_REVIEW_ID
REVIEWBOARD_REVIEW_BRANCH
REVIEWBOARD_DIFF_REVISION
REVIEWBOARD_STATUS_UPDATE_ID
REVIEWBOARD_SERVER
Click Add parameter and select String parameter.
Input the parameter name into Name and leave all other fields blank.
Scroll down to the Build section. Here we can add the Apply patch from Review Board step by clicking Add build step and choosing it from the dropdown menu.
Note
This step uses RBTools to apply the patch from Review Board. It will attempt to install the package using pip, but if it lacks permission you will need to manually install it. Additionally, the order of your build steps matter, so this step should likely be the first build step so all later build steps see the correct source code.
Scroll down to the Post-build actions section. Here we can add the Publish build status to Review Board step by clicking Add post-build action and choosing it from the dropdown menu.
Click Save to save these changes.