This page collects experience and advice on using continuous integration (CI) approaches with ROS. It currently lacks an objective comparison pointing out the differences between the available solutions. Please consider contributing. |
Contents
General
During ROSCon 2015 Birds Of a Feather session was suggested to create such page to help people setup CI on their projects.
ROS Build Farm
Also check the talk: The ROS build farm - what it can do for me at ROSCon 2016.
The ROS build farm is used to provide the official ROS packages and successfully works with a large number of repositories and packages. Beside building Debian packages it also provide continuous integration builds, GitHub pull request testing as well as documentation generation. Jenkins provides an easy interface to the result of all unit and rostests. It is build around the recommended ROS tools and uses Docker to perform easily repeatable results.
The Python package also provides a command line interface to use each job type in other environments, e.g. on any CI server (e.g. how to run a devel job on Travis) or locally.
It can be used to deploy a custom build farm to build and release custom, optionally closed-source packages, build for platforms and architectures not provided by the official ROS build farm, and/or customize any part of the process to specific needs.
Buildbot-ROS
This is a project for building ROS components using Buildbot. This is not aimed to be a replacement for the ROS buildfarm, but rather a (hopefully) easier to setup system for developers wishing to build their own packages, run continuous integration testing, and build docs. More details here
Shadow Robot's Build Tools
These tools offer the following benefits
- 100% open source and Docker based
supported and actively used by Shadow Robot
- can be used for public and private projects
- it takes 15 minutes to setup your project for CI on any of the hosted or local CI servers listed below
- supports following CI servers
- major modules
- catkin build
- unit and ROS tests run
- Python and C++ code coverage reports generation
roslint code style check
- Debian package build and installation check
Please post your improvements suggestions or issues on GitHub page.
industrial_ci, CI Config Suite from ROS-Industrial
Also check ROS Testing, Continuous Integration (CI), and Deployment webconference recording.
industrial_ci contains CI (Continuous Integration) configuration that can be commonly used by the repositories in ROS-Industrial's github organization. Non ROS-Industrial repositories in other organizations can utilize the CI config here too, as long as they are ROS-powered.
- 100% open source
- Actively used by ROS-Industrial repositories and other ROS repos
Configuration examples: industrial_core, ros_canopen, motoman, SwRI's mapviz
- Can be used for public and private projects
Takes 10 minutes to setup your project for Travis CI
ROS GitLab CI
ROS GitLab CI works with Docker images and allows to build ROS projects with catkin_make and/or catkin tools, it also allows to run tests.
- 100% open source
- Can be used for public and private projects
Works with GitLab CI only
Example repository: ROS GitLab CI test
- Allows to run test easily
- Allows to easily cache results for faster pipelines
Objective Comparison
This table is work-in-progress. Your addition is appreciated.
Tool name |
Written in |
Requirement |
Supported ROS distro |
Supported ROS 2 distro |
Supported architectures |
Build Tool |
Private repo support |
Python |
Docker, full deployments use Jenkins, individual jobs can be run anywhere (e.g. locally on Linux and MacOS, on Travis) |
any |
any |
i386, amd64, argmhf, armv8 |
catkin_make_isolated, colcon |
Yes |
|
TBF |
Runs on Jenkins |
TBF |
TBF |
TBF |
|
||
TBF |
TBF |
TBF |
TBF |
TBF |
TBF |
Yes |
|
bash |
bash environment |
Hydro onward |
any |
TBF |
catkin_tools, colcon |
Yes |
|
bash |
Docker images and bash environment |
Indigo onward |
TBF |
TBF |
catkin_make and/or catkin_tools |
Yes |