Skip to content

ci: unblock and broaden the ros2 matrix for Rolling/Resolute - #20

Merged
nbbrooks merged 1 commit into
ros2from
nbbrooks/ci-resolute-fail-fast
Aug 3, 2026
Merged

ci: unblock and broaden the ros2 matrix for Rolling/Resolute#20
nbbrooks merged 1 commit into
ros2from
nbbrooks/ci-resolute-fail-fast

Conversation

@nbbrooks

@nbbrooks nbbrooks commented Aug 3, 2026

Copy link
Copy Markdown
Member

Why

Mirrors PickNikRobotics/rviz_visual_tools#301, which is merged and validated. Three problems, all present here.

1. No fail-fast: false

The matrix omits it, so it defaults to true. When the rolling job fails (problem 2) GitHub cancels every sibling before it finishes, so the matrix reports nothing. On rviz_visual_tools this was measured: one 60-second failure discarded three otherwise-passing jobs.

2. rolling + ROS_REPO: main cannot work on Resolute

Rolling's base OS moved to Ubuntu Resolute. With no OS_CODE_NAME pinned, industrial_ci builds rolling on ubuntu:resolute, and Rolling's main apt repo has no Resolute packages yet — so the job dies in setup, before CMake:

'sudo apt-get install ... ros-rolling-ros-environment' returned with 100
'setup_rosdep' returned with code '100'

ROS_REPO: testing does work on Resolute — verified across sibling repos.

3. Three released distros had no CI at all

graph_msgs ships a single ros2 branch to five distros but tested two:

distro released previously tested
humble 0.2.0-3
jazzy 0.2.0-6
kilted 0.2.0-6
lyrical 0.2.0-7
rolling 0.2.0-6 ✅ (broken)

How

distro base OS ROS_REPO blocking
humble jammy main + testing
jazzy noble main new
kilted noble main new
lyrical resolute main new
rolling resolute testing ⚠️ non-blocking
  • fail-fast: false
  • rollingROS_REPO: testing with OS_CODE_NAME: resolute pinned explicitly, marked non-blocking
  • added jazzy, kilted, lyrical

lyrical is Resolute and released, so its main repo is populated. That gives a blocking Resolute job that should stay green, instead of leaving all Resolute coverage on the non-blocking rolling job.

continue-on-error is placed on the job, valid because this is a step-based job — it would be silently ignored on a job calling a reusable workflow via uses:.

Restore the rolling + main entry, and drop the NONBLOCKING flag, once Rolling publishes to main for Resolute.

Expected result

All six jobs report. humble, jazzy, kilted, lyrical should be green; rolling may be red during the transition without blocking.

🤖 Generated with Claude Code

Three problems, mirroring the fix landed in
PickNikRobotics/rviz_visual_tools#301.

1. fail-fast

The matrix had no `fail-fast: false`, so it defaulted to true. When the
rolling job fails (problem 2), GitHub cancels every sibling before it can
report, and the matrix produces no signal at all.

2. rolling + ROS_REPO: main on Resolute

Rolling's base OS moved to Ubuntu Resolute. With no OS_CODE_NAME pinned,
industrial_ci builds rolling on ubuntu:resolute -- and Rolling's `main` apt
repo has no Resolute packages yet, so the job dies before CMake:

  'sudo apt-get install ... ros-rolling-ros-environment' returned with 100
  'setup_rosdep' returned with code '100'

Switch it to `testing`, which does work on Resolute, and pin OS_CODE_NAME
explicitly rather than relying on industrial_ci's default -- that default
has already changed once. Mark it non-blocking until the Resolute packages
are all released.

3. Three released distros had no CI at all

graph_msgs is released to five distros from this single branch but only
tested two:

  humble  0.2.0-3   tested
  jazzy   0.2.0-6   NOT tested
  kilted  0.2.0-6   NOT tested
  lyrical 0.2.0-7   NOT tested
  rolling 0.2.0-6   tested

lyrical is Resolute and released, so its `main` repo is populated -- it
gives a blocking Resolute job that should stay green, rather than leaving
all Resolute coverage on the non-blocking rolling job.

Restore the rolling+main entry, and drop the NONBLOCKING flag, once Rolling
publishes to `main` for Resolute.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@nbbrooks
nbbrooks force-pushed the nbbrooks/ci-resolute-fail-fast branch from e749057 to 6fde22d Compare August 3, 2026 01:31
@nbbrooks
nbbrooks merged commit 419b796 into ros2 Aug 3, 2026
8 checks passed
@nbbrooks
nbbrooks deleted the nbbrooks/ci-resolute-fail-fast branch August 3, 2026 01:33
nbbrooks added a commit to moveit/moveit_visual_tools that referenced this pull request Aug 3, 2026
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>
nbbrooks added a commit to moveit/moveit_visual_tools that referenced this pull request Aug 3, 2026
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>
nbbrooks added a commit to moveit/moveit_visual_tools that referenced this pull request Aug 3, 2026
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>
nbbrooks added a commit to moveit/moveit_visual_tools that referenced this pull request Aug 3, 2026
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