(!) 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.

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

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
  • 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

ROS buildfarm

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

buildbot-ros

TBF

Runs on Jenkins

Jade (WIP for Kinetic)

TBF

TBF

TBF

sr-build-tools

TBF

TBF

TBF

TBF

TBF

TBF

Yes

industrial_ci

bash

bash environment

Hydro onward

any

TBF

catkin_tools, colcon

Yes

ROS GitLab CI

bash

Docker images and bash environment

Indigo onward

TBF

TBF

catkin_make and/or catkin_tools

Yes

Wiki: CIs (last edited 2021-03-02 11:52:21 by IsaacSaito)