Summary
Add ROS 2 Humble (Ubuntu 22.04 Jammy) support to the CI pipeline. Currently, CI only builds and tests against ROS 2 Jazzy (Ubuntu 24.04 Noble). Since Humble is still widely used (EOL: May 2027), we should verify compatibility on every PR.
Proposed solution
Convert the build-and-test job to a matrix strategy running both Jazzy and Humble in parallel:
| Distro |
Container |
Linters |
Unit/Integration Tests |
| Jazzy |
ubuntu:noble |
Yes |
Yes |
| Humble |
ubuntu:jammy |
No |
Yes |
Key implementation details
cpp-httplib not available on Jammy - the libcpp-httplib-dev package was introduced in Ubuntu 23.10. For Humble, cpp-httplib v0.14.3 is built from source in a conditional CI step.
- Linters run only on Jazzy -
clang-format and clang-tidy versions differ between Ubuntu 22.04 and 24.04, which could produce false positives. Running linters once on Jazzy is sufficient.
- Coverage stays on Jazzy only - no need to duplicate coverage collection across distros.
- Artifact names include distro suffix (
test-results-jazzy, test-results-humble) to avoid upload collisions.
Compatibility analysis
All other dependencies are confirmed available on both distros:
nlohmann_json - rosdep resolves to nlohmann-json3-dev on Jammy
yaml_cpp_vendor - available in both Humble and Jazzy
rclcpp APIs used (BestAvailable QoS, generic subscriptions, graph introspection) - introduced in Humble
rosbag2_cpp / rosbag2_storage - available with compatible APIs
- Python integration tests - use stable
launch_testing / rclpy APIs
- Both Humble nad Jazzy uses C++17
Additional context
fail-fast: false ensures both distro jobs complete independently even if one fails
- ROS 2 Humble EOL: May 2027
- ROS 2 Jazzy EOL: May 2029
Summary
Add ROS 2 Humble (Ubuntu 22.04 Jammy) support to the CI pipeline. Currently, CI only builds and tests against ROS 2 Jazzy (Ubuntu 24.04 Noble). Since Humble is still widely used (EOL: May 2027), we should verify compatibility on every PR.
Proposed solution
Convert the
build-and-testjob to a matrix strategy running both Jazzy and Humble in parallel:ubuntu:nobleubuntu:jammyKey implementation details
cpp-httplibnot available on Jammy - thelibcpp-httplib-devpackage was introduced in Ubuntu 23.10. For Humble, cpp-httplib v0.14.3 is built from source in a conditional CI step.clang-formatandclang-tidyversions differ between Ubuntu 22.04 and 24.04, which could produce false positives. Running linters once on Jazzy is sufficient.test-results-jazzy,test-results-humble) to avoid upload collisions.Compatibility analysis
All other dependencies are confirmed available on both distros:
nlohmann_json- rosdep resolves tonlohmann-json3-devon Jammyyaml_cpp_vendor- available in both Humble and JazzyrclcppAPIs used (BestAvailableQoS, generic subscriptions, graph introspection) - introduced in Humblerosbag2_cpp/rosbag2_storage- available with compatible APIslaunch_testing/rclpyAPIsAdditional context
fail-fast: falseensures both distro jobs complete independently even if one fails