Skip to content

CI: downstream ROS 2 Jazzy / Gazebo Harmonic workspace integration - #24

Open
sotomotocross wants to merge 7 commits into
uos:mainfrom
sotomotocross:ros2-jazzy-harmonic
Open

CI: downstream ROS 2 Jazzy / Gazebo Harmonic workspace integration#24
sotomotocross wants to merge 7 commits into
uos:mainfrom
sotomotocross:ros2-jazzy-harmonic

Conversation

@sotomotocross

Copy link
Copy Markdown

Summary

rmagine itself needed no core changes for ROS 2 Jazzy / Gazebo Harmonic
(it has no ROS or Gazebo dependency at all -- Embree/OptiX ray tracing
only). This PR adds CI that builds rmagine alongside its three
downstream, ROS 2/Gazebo-dependent sibling packages
(rmagine_gazebo_plugins, radarays_gazebo_plugins, radarays_ros) and
runs their full regression suites -- so a future change here that breaks
a downstream consumer gets caught automatically, on both CPU (Embree) and
GPU (OptiX) paths.

This is one of 4 companion PRs for a full ecosystem migration off ROS 1 +
Gazebo Classic. The other three (the ones with real functional changes):

  • rmagine_gazebo_plugins -- Harmonic port of the Embree/OptiX scene
    mirroring + sensor Systems
  • radarays_gazebo_plugins -- Harmonic port of the radar sensor itself
  • radarays_ros -- ROS 2 port of the standalone radar nodes + material
    optimizer

What's in this PR

  • gz_workspace_integration.yml / _gpu.yml: clone the 3 sibling repos
    (from this fork's own siblings while this is unmerged, easy to retarget
    to uos/* once/if those PRs land), build the whole workspace, run
    every fixture across all 4 packages.
  • A couple of real CI bugs found and fixed getting this green on an
    actual runner (not just locally): a rosdep/set -u unbound-variable
    crash, and a self-hosted-runner idempotency issue (stale sibling
    checkouts from a previous run).

Verification

CPU and GPU CI both green on this fork, real runners (one GitHub-hosted,
one self-hosted with an actual GPU) -- not just "builds locally."

Caveats, disclosed rather than hidden

  • GPU CI currently runs on a personal self-hosted runner, not permanent
    shared infra -- fine for proving the pipeline works, not a proposal for
    where it should live long-term.
  • This is a personal fork built for my own project's needs, offered
    upstream in case it's useful -- happy to adjust scope/approach based on
    maintainer feedback.

Builds the full 4-package Harmonic radar workspace (rmagine,
rmagine_gazebo_plugins, radarays_gazebo_plugins, radarays_ros) against
this repo's current commit, so a rmagine change that breaks the
downstream integration gets caught here instead of only being noticed
later in one of the other repos. The GPU variant needs a self-hosted
runner with a working OptiX SDK (see its own header comment for why
there's no hardcoded include-dir default).
First real run on a live runner failed immediately: ROS 2's setup.bash
references AMENT_TRACE_SETUP_FILES without guaranteeing it's set, which
set -euxo pipefail's -u treats as fatal. ci_build_and_test.sh already
had this exact workaround; this inline step never got it.
None of the 4 repos' Harmonic ports are merged upstream yet, so cloning
uos/*'s main/ros2 pulled unported code and failed for reasons unrelated
to this repo's own change. Temporary, marked clearly in the workflow --
revert to uos/* before opening the PR upstream.
Unlike GitHub-hosted runners (a fresh VM every run), a self-hosted
runner's _work directory persists between runs -- plain git clone fails
once the target directory exists from a prior run. First real failure
on the newly-registered GPU runner.
The sibling-clone comment said "TEMPORARY... MUST be reverted to uos/*
before opening the PR upstream" -- no longer accurate. rmagine_gazebo_plugins
was superseded by amock's own rewrite upstream (merged into uos/main
2026-08-05); we're continuing independently on our own forks rather than
chasing that merge. The clone URLs/branches themselves were already
correct (sotomotocross/*, ros2-jazzy-harmonic) -- only the comment
explaining why needed updating.
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