Jenkins System for ROS-Industrial Repositories

As the ROS-Industrial open source project adds support for more robot vendors and grows larger with more active contributors, ensuring successful builds and compliance with code quality standards for each new revision is becoming a tedious and time consuming task. Errors introduced by broken revisions may go undetected making it difficult to trace the root cause of issues observed in subsequent revisions. In anticipation of these growing pains, we sought an automatic and efficient solution to this common set of problems found in large software projects. We identified Jenkins to meet this need and it is now deployed for use with our GitHub repositories: ROS-Industrial Jenkins

jenkins_blog_image_1.png

What Does Jenkins do for the Repo?

The Jenkins system is configured to automatically build the most recent version of several ROS-I repositories and check for any compile errors introduced by changes in the code. Furthermore, it auto-generates analysis reports that expose nonstandard coding practices and bugs that the compiler otherwise ignores.

Here we see the ratio between the code comments and the code itself for the recent commits. It isn't that exciting yet, because Jenkins has just started tracking.

Here we see the ratio between the code comments and the code itself for the recent commits. It isn't that exciting yet, because Jenkins has just started tracking.

Another helpful report that is auto-generated by Jenkins. 

Another helpful report that is auto-generated by Jenkins. 

How do I use it?

Whenever you commit code to the ROS-I repo, the Jenkins system will update its reports.

Do I need to install anything to get it to work?

You don't need to load any new software to browse the reports on the ROS-I repo, but if you wish to see your analytics before commiting the code, or if you simply want to use Jenkins for a private repo, setting up the Jenkins system on your PC is very straight forward and only takes a few simple steps. For specific details on the installation procedure go to github repository

How is the ROS-Industrial Jenkins different than the ROS Jenkins (Build Infrastructure)? 

The ROS Jenkins server (and associated build infrastructure) are used by ROS community to build and deploy debian (binary) releases.  The intended application of the ROS-Industrial Jenkins server is different in the following ways, ROS-Industrial

  • allows multiple repo branches to be built against a single ROS release
  • is lightweight (only compiles, tests, and profiles; no debian packaging) 
  • is customizable and allows users to apply specialized profiling and testing tools (those that are supported by Jenkins)
  • is easy to set up, requiring only the installation of Jenkins and the addition of rosinstall files for each job.