CI: downstream ROS 2 Jazzy / Gazebo Harmonic workspace integration - #24
Open
sotomotocross wants to merge 7 commits into
Open
CI: downstream ROS 2 Jazzy / Gazebo Harmonic workspace integration#24sotomotocross wants to merge 7 commits into
sotomotocross wants to merge 7 commits into
Conversation
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.
This was referenced Jul 30, 2026
2 tasks
sotomotocross
force-pushed
the
ros2-jazzy-harmonic
branch
from
August 29, 2026 08:36
d851c14 to
3f9ee01
Compare
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rmagineitself 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
rmaginealongside its threedownstream, ROS 2/Gazebo-dependent sibling packages
(
rmagine_gazebo_plugins,radarays_gazebo_plugins,radarays_ros) andruns 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 scenemirroring + sensor Systems
radarays_gazebo_plugins-- Harmonic port of the radar sensor itselfradarays_ros-- ROS 2 port of the standalone radar nodes + materialoptimizer
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, runevery fixture across all 4 packages.
actual runner (not just locally): a
rosdep/set -uunbound-variablecrash, 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
shared infra -- fine for proving the pipeline works, not a proposal for
where it should live long-term.
upstream in case it's useful -- happy to adjust scope/approach based on
maintainer feedback.