GitHub launched last year GitHub actions, a new feature to build CI/CD pipelines from any GitHub repository. This service is similar to Travis, but provides the ability to implement, and release pipeline “steps” (actions) directly to a marketplace.
The ROS tooling working group has been developing three actions to enable GitHub users to build ROS CI/CD pipelines:
ros-tooling/setup-ros setups workers with a version of ROS and/or ROS2, as well as all the required developer tools (
rosdep, …) - marketplace link
ros-tooling/action-ros-ci checks out a
ros2.reposby default), and runs
colcon build, and
colcon teston it. Various flags can be passed to customize the run - marketplace link
ros-tooling/action-ros-lint executes a variety of
ament_*linters without compiling the package source code to provide linter feedback quickly - marketplace link
Runs happen on pull requests, and
master is re-tested every two hours.
The GitHub actions aim for strict REP-3 and REP-2000 compliance. Actions support all non-EOL ROS distributions, on all Tier-1 platforms. In particular, this action supports macOS, and Microsoft Windows (ROS 2 only).
For macOS, and Microsoft Windows, the OS version specified in the REPs may
not be available as a GitHub Hosted runners.
In this case, GitHub actions will use the closest available worker
environment. Users requiring exact REP compliance should run the action on a self-hosted
Example of GitHub Pipelines
Those three actions can be customized to build a variety of pipelines. This is made easier by the various GitHub actions already released on the marketplace.
- Code Coverage generation (Python/C++), easy integration with CodeCov.
- ASAN/TSAN support to automatically report memory and threading issues (example)
- colcon log archival
Code quality, Stability, Known Issues
The action code is beta quality. It will probably work out of the box for simple use cases, but you may encounter bugs, in particular Windows and OS X support is still fragile.
All actions include tests to validate the CI infrastructure.
The biggest issue we are dealing with at the moment, is flakyness when setting up workers (APT repo timeout, etc.). We will be working on decreasing flakyness during Q1’20.
We plan to continue improving the actions in the future, all new developments will take place through the ROS Tooling working group.
Please let the WG if you use the actions, all feedback is welcome! Thank you!