Add Jenkins CI integration

Review Request #9507 — Created Jan. 27, 2018 and submitted — Latest diff uploaded

rbintegrations, students

Jenkins is a continuous integration environment, widely used in industry
for running automated test suites, performing deployments, as well as
many other use cases.

This change adds a Jenkins integration to Review Board. This will enable
users to add this integration and have new review requests trigger
builds on a Jenkins server.

This additionally features a Jenkins plugin. This plugin features two
build steps. The first build step, to occur prior to the main job's
build steps, applies the review request's diff using rbt patch. The
second, post-build step notifies review board of the build's status.

rbintegrations/util/ featured duplicate code from the
reviewboard repository, reviewboard.hostingsvcs.service.URLRequest.
That class is currently an internal class, so rather than importing it
in all files that use it in this repository, for now we'll import it
once in this file. Once URLRequest is refactored in the reviewboard
repo, we can remove the file and import the original

  • Unit tests have been created and ran for the Jenkins java plugin
    • Run mvn test in the base directory
  • Unit tests have been created and ran for rbintegrations
  • Manual testing of creating reviews, publishing them, triggering
    builds on Jenkins server, and those builds updating the status
    once complete.