Skip to content

ci: add distro coverage for jazzy, kilted and lyrical - #157

Merged
nbbrooks merged 1 commit into
ros2from
nbbrooks/ci-distro-coverage
Aug 3, 2026
Merged

ci: add distro coverage for jazzy, kilted and lyrical#157
nbbrooks merged 1 commit into
ros2from
nbbrooks/ci-distro-coverage

Conversation

@nbbrooks

@nbbrooks nbbrooks commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Why

This repo ships a single ros2 branch to five distros but tests two — and neither gives a Resolute signal.

distro released previously tested
humble 4.1.2-1 humble-source
jazzy 4.1.2-1
kilted 4.1.2-2
lyrical 4.1.2-3
rolling 4.1.2-2 ⚠️ rolling-source — see below

The rolling job pins moveit/moveit2:rolling-source. That image is stale. moveit2's docker.yaml has failed on every run since ~2026-07-13 — its .docker/ci/Dockerfile hardcodes clang-format-14, which Ubuntu Resolute doesn't package (it ships 17–22) — so the source job is skipped and the published tag predates Rolling's base-OS move to Resolute.

The last CI run on ros2 was 2026-06-23, also before the transition. So the green badge currently says nothing about Resolute.

How

MoveIt is released on jazzy, kilted and lyrical, so those can be covered today with plain binary debs — no source build, no dependency on the moveit2 image pipeline.

job base OS mechanism
humble-source jammy prebuilt moveit2 image (unchanged)
rolling-source + clang-tidy prebuilt moveit2 image (unchanged)
jazzy-main noble new — binary debs
kilted-main noble new — binary debs
lyrical-main resolute new — binary debs, OS_CODE_NAME pinned

lyrical is Ubuntu Resolute, making it the first job in this repo that exercises Resolute at all.

Jobs building on a bare OS image must leave DOCKER_IMAGE unset, so it moves out of the static job env: into a conditional step — the same pattern moveit2's own ci.yaml uses. CACHE_PREFIX and the job name fall back to <distro>-<repo> for entries with no IMAGE.

fail-fast: false was already present, so a failing new job won't cancel the existing ones.

⚠️ Expect lyrical-main to fail initially — that's the point

CMakeLists.txt still calls ament_target_dependencies (lines 49, 58), removed in ament_cmake 2.7.3+. That is precisely the breakage reported in rviz_visual_tools#294:

The current release … is failing to build in the ROS 2 Lyrical distribution because it relies on the ament_target_dependencies macro, which has been removed in Lyrical (ament_cmake 2.7.3+).

The fix exists on the parked nbbrooks/rolling-compat branch but has never been opened as a PR. This change doesn't fix that — it makes it visible instead of silently untested, so the follow-up PR has something to prove itself against.

Same sequencing that worked on rviz_visual_tools: #301 restored CI signal → the newly-visible failures were then fixed by #300 and #302, ending with all six jobs green.

🤖 Generated with Claude Code

@nbbrooks
nbbrooks force-pushed the nbbrooks/ci-distro-coverage branch 6 times, most recently from 94b3ec8 to bbb9539 Compare August 3, 2026 02:14
This repo ships a single `ros2` branch to five distros but only tested two,
and neither gave a Resolute signal:

  humble  4.1.2-1   tested (humble-source image)
  jazzy   4.1.2-1   NOT tested
  kilted  4.1.2-2   NOT tested
  lyrical 4.1.2-3   NOT tested
  rolling 4.1.2-2   tested (rolling-source image -- see below)

Move the whole matrix to plain ROS_DISTRO/ROS_REPO jobs, matching
PickNikRobotics/rviz_visual_tools#301 and PickNikRobotics/graph_msgs#20:

  humble-main     jammy     blocking
  jazzy-main      noble     blocking
  kilted-main     noble     blocking      (takes over CLANG_TIDY)
  lyrical-main    resolute  non-blocking
  rolling-testing resolute  non-blocking

The rolling-source job had to go. With a *prebuilt* image, ROS_DISTRO:
rolling does not imply Resolute the way it does for a bare-OS job -- the OS
comes from the image. moveit/moveit2:rolling-source is Ubuntu noble, built
2026-01-24, with MoveIt compiled inside it, so the job never asked apt for
ros-rolling-moveit-core and never touched Resolute. Rolling moved to
Resolute, so it was testing a distro/OS pairing that no longer ships, and
reporting green for it -- concealing the blocker below.

It could not self-heal either: moveit2's docker.yaml is 12 successes to 85
failures, and even its last success (2026-06-24) did not refresh that tag.
The usual argument for a source image -- exercising MoveIt main -- was not
being served by a January snapshot.

Dropping humble-source too keeps the matrix uniform and removes this repo's
last dependency on the moveit2 image pipeline. MoveIt is released as debs on
every distro here (humble 2.5.9, jazzy 2.12.4, kilted 2.14.3), so binary
jobs test what users actually install. moveit_visual_tools.repos still
source-builds rviz_visual_tools and graph_msgs, which is where the
unreleased fixes live.

With no image left, DOCKER_IMAGE, UNDERLAY (and its
AFTER_SETUP_UPSTREAM_WORKSPACE_EMBED predecessor) and the IMAGE fallbacks in
CACHE_PREFIX / name are all removed as dead plumbing.

lyrical and rolling both fail today for the same reason:

  E: Unable to locate package ros-lyrical-moveit-core

Only moveit_common, moveit_configs_utils, moveit_msgs and moveit_resources
are published for Resolute; moveit_core is not. That blocks every downstream
package on Resolute -- lyrical as well as rolling. Both jobs are non-blocking
and will start passing on their own once moveit2 is released there.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant