Skip to content

ci: add docker-compose interop harness (hiroz container <-> ROS 2 Jazzy)#200

Closed
nargetdev wants to merge 1 commit into
ZettaScaleLabs:mainfrom
nargetdev:claude/sweet-wright-1d2dsz
Closed

ci: add docker-compose interop harness (hiroz container <-> ROS 2 Jazzy)#200
nargetdev wants to merge 1 commit into
ZettaScaleLabs:mainfrom
nargetdev:claude/sweet-wright-1d2dsz

Conversation

@nargetdev

Copy link
Copy Markdown

Add a cross-container RED/GREEN test harness where hiroz runs in its own container (a Raspberry Pi analogue) and talks idiomatic zenoh through rmw_zenohd to a separate container with a full ROS 2 Jazzy install:

  • compose/docker-compose.yml: three services (rmw_zenohd router, hiroz testbed, ROS 2 gate runner) on one bridge network with healthcheck-gated startup; multicast scouting disabled so tcp/router:7447 is the only rendezvous. HIROZ_PLATFORM=linux/arm64 switches the hiroz container to arm64 (cross-compiled with cargo-zigbuild, runtime under QEMU).
  • crates/hiroz/examples/compose_testbed.rs: long-running multi-node testbed (talker, ping->pong echo, AddTwoInts server, retrying AddTwoInts client, Fibonacci action server, parameter node) mirroring the scenarios proven by hiroz-tests interop tests.
  • compose/gates/: one bash gate per capability — topics both directions, services both directions, ros2 param list/get/set, fibonacci action goal/feedback/result plus graph introspection — with a GREEN/RED summary and aggregate exit code via --exit-code-from gates.
  • .github/workflows/compose-interop.yml: builds both images with buildx (gha layer cache), runs the gates on PRs and main pushes, dumps logs on failure; workflow_dispatch input runs the Pi analogue as linux/arm64.

https://claude.ai/code/session_01ER6KMvKVGLBkdf8X5rNWNC

Description

Checklist

  • Ran ./scripts/check-local.sh successfully
  • Added/updated tests/documentation (if applicable)

External contributors: Please open as draft initially. See CONTRIBUTING.md.

Add a cross-container RED/GREEN test harness where hiroz runs in its own
container (a Raspberry Pi analogue) and talks idiomatic zenoh through
rmw_zenohd to a separate container with a full ROS 2 Jazzy install:

- compose/docker-compose.yml: three services (rmw_zenohd router, hiroz
  testbed, ROS 2 gate runner) on one bridge network with healthcheck-gated
  startup; multicast scouting disabled so tcp/router:7447 is the only
  rendezvous. HIROZ_PLATFORM=linux/arm64 switches the hiroz container to
  arm64 (cross-compiled with cargo-zigbuild, runtime under QEMU).
- crates/hiroz/examples/compose_testbed.rs: long-running multi-node
  testbed (talker, ping->pong echo, AddTwoInts server, retrying AddTwoInts
  client, Fibonacci action server, parameter node) mirroring the scenarios
  proven by hiroz-tests interop tests.
- compose/gates/: one bash gate per capability — topics both directions,
  services both directions, ros2 param list/get/set, fibonacci action
  goal/feedback/result plus graph introspection — with a GREEN/RED summary
  and aggregate exit code via --exit-code-from gates.
- .github/workflows/compose-interop.yml: builds both images with buildx
  (gha layer cache), runs the gates on PRs and main pushes, dumps logs on
  failure; workflow_dispatch input runs the Pi analogue as linux/arm64.

https://claude.ai/code/session_01ER6KMvKVGLBkdf8X5rNWNC
@nargetdev nargetdev closed this Jun 11, 2026
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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.

3 participants