Hi all,
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 (
colcon
,rosdep
, …) - marketplace link -
ros-tooling/action-ros-ci checks out a
*.repos
file (ros2.repos
by default), and runscolcon build
, andcolcon test
on 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
It is used by a few packages, such as rosbag2
, or system_metrics_collector
. See the actions tab of those repositories to see the jobs we run.
Runs happen on pull requests, and master
is re-tested every two hours.
Supported Platforms
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
runner.
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.
Future Development
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!