# Continous integration and testing (toolchain) for commercial ROS projects

**URL:** <https://discourse.openrobotics.org/t/continous-integration-and-testing-toolchain-for-commercial-ros-projects/26636>\
**Category:** Quality Assurance\
**Created:** [July 26, 2022, 4:52pm UTC](https://discourse.openrobotics.org/t/continous-integration-and-testing-toolchain-for-commercial-ros-projects/26636 "2022-07-26T16:52:25Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![diy](https://avatars.discourse-cdn.com/v4/letter/d/dfb087/32.png) [@diy](https://discourse.openrobotics.org/u/diy)\
**Post date:** [July 26, 2022, 4:52pm UTC](https://discourse.openrobotics.org/t/continous-integration-and-testing-toolchain-for-commercial-ros-projects/26636/1 "2022-07-26T16:52:25Z")

</div>

Hi,  
we’re evaluating the ROS overall environment for a commercial use case. Continous integration and testing (and reporting) is vital in our case. We are looking for an all-in-one software suite for test generation, test execution and monitoring, test management and and automated reporting. Almost plugin-and-play integration for ROS-supporting simulation environments would be nice.

So far I have not found any ressources to a specific ROS related test suite, toolchain nor best practices.

Ressources I’ve found so far:  
Simulation-based testing: Webots, Gazebo Ignition, (Carla)  
[Testing for contributers](https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Developer-Guide.html?highlight=testing+reporting#testing)  
[General Tools](http://wiki.ros.org/Tools)  
Related threads: [1](http://discourse.ros.org/t/integration-testing-in-ros-2/6859) [2](http://discourse.ros.org/t/best-practices-for-robot-testing/16608)  
Other tools: [Scenario test tools](https://github.com/ipa320/cob_command_tools/tree/indigo_dev/scenario_test_tools)

How do you guys handle this? Do you use “traditional” tools/toolchains? Any recommendations in this area? Any major bummers we could run into?

Thanks!

---

<div class="post-metadata">

**Author:** ![tylerjw](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/tylerjw/32/3270_2.png) [@tylerjw](https://discourse.openrobotics.org/u/tylerjw)\
**Post date:** [July 26, 2022, 5:08pm UTC](https://discourse.openrobotics.org/t/continous-integration-and-testing-toolchain-for-commercial-ros-projects/26636/2 "2022-07-26T17:08:52Z")

</div>

You might find these blog posts I wrote about tooling for CI with ROS projects interesting:

- [Cloud Repo Hosting and Continuous Integration | PickNik](http://picknik.ai/ros2/moveit2/devops/2021/02/18/DevOps-for-ROS-part1.html)
- [DevOps for ROS Projects Part 2 | PickNik](http://picknik.ai/ros/moveit/devops/2021/12/14/DevOps-for-ROS-Projects-Part-2.html)

We work on many projects that have to support different team sizes, client needs, and collaboration styles and have found a common set of tools that work well for us. The TL;DR for us is we use industrial\_ci based on GitHub Actions. For an example how we do this you can look at the moveit2 repo: [GitHub - moveit/moveit2: 🤖 MoveIt for ROS 2](https://github.com/ros-planning/moveit2)

Another large project that has a robust CI system with very mature testing is Navigation 2. You should check out their repo here: [GitHub - ros-navigation/navigation2: ROS 2 Navigation Framework and System](https://github.com/ros-planning/navigation2)

Today I learned by reading the reviews of the talk we submitted to ROSCON about this topic that it was rated really low on “Open Source Availability” which makes me wonder if the reviewers read our description. The tooling we developed for and use on MoveIt2 has been reused on many comercial projects and I am happy to answer any questions you have about it and help you understand the tradeoffs between different tooling options you have.
