Skip to content

Add Cyclone DDS as default supported DDS scheme#4

Merged
cooperj merged 24 commits intomainfrom
cooperj/dds
Mar 13, 2026
Merged

Add Cyclone DDS as default supported DDS scheme#4
cooperj merged 24 commits intomainfrom
cooperj/dds

Conversation

@cooperj
Copy link
Member

@cooperj cooperj commented Mar 3, 2026

This is a PR to add Cyclone DDS as the main ROS middleware and focus on adding that and making it work well. The following text below is a Copilot generated summary of the changes, that have been reviewed for accuracy.

This was developed during some downtime on the self-hosted LCAS runners which led to some troubleshooting which have implemented extra changes which should improve the containers as a whole.


This pull request introduces several improvements to the Docker build workflow and base images for ROS2 with CUDA support. The main focus is on adding Cyclone DDS configuration, updating the CUDA base image, and enhancing the Dockerfiles for better reproducibility and ROS2 middleware support.

Enhancements to ROS2 and CUDA Docker images:

  • Cyclone DDS integration:

    • Added installation of ros-${ROS_DISTRO}-rmw-cyclonedds-cpp in both base.dockerfile and cuda.dockerfile, along with copying the new cyclonedds.xml configuration file and setting relevant environment variables (RMW_IMPLEMENTATION, CYCLONEDDS_URI). [1] [2] [3] [4] [5]
    • Created a default Cyclone DDS configuration file at docker/cyclonedds.xml to enable multicast and auto participant indexing.
  • Docker image build workflow updates:

    • Updated the CUDA base image in the workflow to nvidia/cuda:12.9.1-runtime-ubuntu24.04 for improved compatibility and performance.
    • Added a step to pull the base image before building, ensuring the latest image is used.

General improvements and fixes:

  • Enhanced package installation:

    • Added missing packages (ca-certificates, gnupg, wget) and switched to --no-install-recommends for leaner images in both base.dockerfile and cuda.dockerfile. [1] [2]
    • Improved locale setup and ensured LANG is set to en_US.UTF-8. [1] [2]
  • User and bash profile configuration:

    • Added sudo support for the non-root user and ensured bash profile is correctly configured and owned by the user. [1] [2]
    • Changed Dockerfile to run as the non-root user by default. [1] [2]
  • Desktop image improvements:

    • Set a default base image for cuda_desktop.dockerfile and switched to using sudo for package installation.

These changes collectively improve the robustness, security, and ROS2 middleware support of the Docker images and workflows.

@cooperj cooperj mentioned this pull request Mar 13, 2026
3 tasks
cooperj added 3 commits March 13, 2026 09:47
 As we are running at the previous container out as the standard user and not root
@cooperj cooperj marked this pull request as ready for review March 13, 2026 11:07
@cooperj cooperj requested a review from Copilot March 13, 2026 11:07
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the ROS/ROS+CUDA Docker images to include Cyclone DDS support and attempts to make Cyclone DDS the default RMW implementation via image configuration.

Changes:

  • Add a Cyclone DDS XML config and copy it into built images.
  • Install ros-${ROS_DISTRO}-rmw-cyclonedds-cpp in the base and CUDA images and set Cyclone-related runtime configuration.
  • Update the GitHub Actions build workflow (base image tag update; pull base image step).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
docker/cyclonedds.xml Adds a Cyclone DDS runtime configuration file intended to be used by the images.
base.dockerfile Installs Cyclone RMW package, copies Cyclone config, and configures shell startup behavior.
cuda.dockerfile Installs Cyclone RMW package, copies Cyclone config, and configures shell startup behavior for CUDA images.
cuda_desktop.dockerfile Updates base image default and uses sudo for desktop package installation on top of the CUDA base image.
.github/workflows/_build-image.yaml Adds an explicit base-image pull step before building.
.github/workflows/docker-build-and-push.yaml Minor workflow input formatting + updates the CUDA Jazzy base image tag.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

cooperj and others added 2 commits March 13, 2026 11:31
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@cooperj cooperj requested a review from Copilot March 13, 2026 13:39
@cooperj cooperj self-assigned this Mar 13, 2026
@cooperj cooperj added the enhancement New feature or request label Mar 13, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Cyclone DDS support and makes it the default RMW implementation in the provided ROS(-CUDA) container images, including a bundled CycloneDDS configuration and CI build updates.

Changes:

  • Install ros-${ROS_DISTRO}-rmw-cyclonedds-cpp and set RMW_IMPLEMENTATION / CYCLONEDDS_URI defaults in the base and CUDA images.
  • Add a Cyclone DDS XML config and copy it into the images.
  • Update GitHub Actions Docker build workflow (base image version bump + explicit base-image pull).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
docker/cyclonedds.xml Adds a default CycloneDDS configuration file.
base.dockerfile Installs Cyclone RMW, copies config, sets env defaults, and switches to non-root user.
cuda.dockerfile Installs Cyclone RMW, copies config, sets env defaults, and switches to non-root user.
cuda_desktop.dockerfile Adjusts build defaults and uses sudo for package installation in the desktop variant.
.github/workflows/docker-build-and-push.yaml Updates workflow inputs (incl. Jazzy CUDA base image tag).
.github/workflows/_build-image.yaml Adds a step to pre-pull the selected base image before building.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@cooperj cooperj merged commit 7f50317 into main Mar 13, 2026
6 checks passed
@cooperj cooperj deleted the cooperj/dds branch March 13, 2026 14:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants